一个用session传递对象的典型例子,和用面向对象编程的朋友共同分享(转自CSDN)
session|编程|对象
首先,你的session要好使,PHP4.1以上的版本别忘了把php.ini中的register_globle=Off设成register_globle=On,还有就是session.cookie_path = /,注意这行不可以乱改,有的版本PHP改了这个设置session就不好使,这是PHP的一个BUG.
好了,我假设你的session已经没问题了,我对下面的例子作个说明:b.php和a.php各定义了一个类,其中a.php中的类a稍微复杂,因为它是由b.php中的类doc组成的,这叫类的组成关系.我举的例子大概是最简单的类组成关系的例子啦.
c.php中产生了一个类a的对象叫test,并把它注册成session变量,c.php还显示了一个超文本的表单界面,供你输入一个字串.点击按钮后,对象test被传递到d.php,在下面的程序中,我具体介绍了传递对象时要注意的事项.这个程序是可以实际运行的,它是我学习用session传递对象的一个小总结,大家可以回去试试看,祝大家愉快.
//a.php
include("b.php");//包含b.php是因为doc类的定义在b.php中,而类a中的doc属性是doc类的对象
/**
* Short description.
* 一个带有组成关系的类
* Detail description
* @author
* @version 1.0
* @copyright
* @access public
*/
class a
{
/**
* Description 这是一个简单变量作为类a的属性
* @var
* @since 1.0
* @access private
*/
var $docid;
/**
* Description 这是一个对象变量作为类a的属性
* @var
* @since 1.0
* @access private
*/
var $doc;
/**
* Short description.
* 构造函数
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function a()//类a的构造函数,它给自己的doc属性赋了初值
{
$adoc=new doc;
$this->doc=$adoc;
} // end func
/**
* Short description.
* 给docid赋值
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function getdocid()//这个函数给自己的docid属性赋了值
{
$this->docid=$this->doc->id;
} // end func
/**
* Short description.
* 这个函数极简单,就不解释啦
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function printdocid()//显示doc对象属性的id属性
{
echo "doc->id=".$this->doc->id."
";
} // end func
} // end class
?>
//b.php
/**
* Short description.
* 这是一个简单的类
* Detail description
* @author
* @version 1.0
* @copyright
* @access public
*/
class doc
{
/**
* Description 简单变量作为类doc的属性
* @var
* @since 1.0
* @access private
*/
var $id;
/**
* Short description.
* 这个函数显示一个录入界面
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function scr()
{
screen();
} // end func
/**
* Short description.
* 这个函数把上面录入的值入库
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function save($conn,$i)
{
$sql="INSERT INTO `test` (`id`, `name`) VALUES ('', '$i')";
$result=mysql_query($sql,$conn);
$this->id = mysql_insert_id($conn);
} // end func
} // end class
?>
//c.php
include("a.php");//要产生类a的对象须包含定义类a的文件(注意,a.php中不能有超文本,一个空格都不行,因为session_start前面有这样的要求;也不能包含带有超文本的文件,如果功能要求中必须包含超文本,请做成象下面screen.php那样的函数)
$test=new a();//产生一个类a的对象,取名test
session_start();
session_register('test');//把对象变量注册成session变量以便传递
include("screen.php");//这时再包含带有超文本的文件
$test->doc->scr();//调用界面显示
?>
//d.php
include("a.php");//要想用session接受前面传递的对象变量,必须在session_start()前包含定义该类的文件
session_start();
include("conn.php");//此文件中定义了下句用到的connect()函数的定义
$conn=connect();
echo "i=$i
";
$test->doc->save($conn,$i);//这个test对象是在c.php中建立,并通过session传递过来的,它是这段程序显示的目的所在, 请注意体会;test对象的属性和方法被session传递后,依然有效
$test->getdocid();
$test->printdocid();
?>
return

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu
