日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

一個用session傳遞對象的典型例子,與用面向對象編程的朋友共同分享(轉自CSDN)

一個用session傳遞對象的典型例子,與用面向對象編程的朋友共同分享(轉自CSDN)

更新時間:2021-11-16 文章作者:未知 信息來源:網絡 閱讀次數:

首先,你的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 
* @version1.0
* @copyright
* @access public
*/
class a
{

 /**
 * Description 這是一個簡單變量作為類a的屬性
 * @var 
 * @since 1.0
 * @accessprivate
 */
var $docid;

/**
 * Description 這是一個對象變量作為類a的屬性
 * @var 
 * @since 1.0
 * @accessprivate
 */
var $doc;


/**
 * Short description.
 * 構造函數
 * Detail description
 * @paramnone
 * @global none
 * @since1.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
 * @paramnone
 * @global none
 * @since1.0
 * @access private
 * @return void
 * @update date time
*/
function getdocid()//這個函數給自己的docid屬性賦了值
{
$this->docid=$this->doc->id;
} // end func

/**
 * Short description.
 * 這個函數極簡單,就不解釋啦
 * Detail description
 * @paramnone
 * @global none
 * @since1.0
 * @access private
 * @return void
 * @update date time
*/
function printdocid()//顯示doc對象屬性的id屬性
{
 echo "doc->id=".$this->doc->id."<br>";

} // end func

} // end class
?>
<?
//b.php
/**
* Short description.
* 這是一個簡單的類
* Detail description
* @author 
* @version1.0
* @copyright
* @access public
*/
class doc
{

/**
 * Description 簡單變量作為類doc的屬性
 * @var 
 * @since 1.0
 * @accessprivate
 */
var $id;



/**
 * Short description.
 * 這個函數顯示一個錄入界面
 * Detail description
 * @paramnone
 * @global none
 * @since1.0
 * @access private
 * @return void
 * @update date time
*/
function scr()
{
screen();
} // end func
/**
 * Short description.
 * 這個函數把上面錄入的值入庫
 * Detail description
 * @paramnone
 * @global none
 * @since1.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<br>";
$test->doc->save($conn,$i);//這個test對象是在c.php中建立,并通過session傳遞過來的,它是這段程序顯示的目的所在, 請注意體會;test對象的屬性和方法被session傳遞后,依然有效
$test->getdocid();
$test->printdocid();
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<a href="c.php">return</a>
</body>
</html><!--到此為止都是d.php文件中的-->
<?
//conn.php

/**
* Short description.
* 這就是一個普通的mysql連接函數,沒什么特別的
* Detail description
* @paramnone
* @global none
* @since1.0
* @access private
* @return void
* @update date time
*/
function connect() 
{$conn=mysql_connect("localhost","","");
mysql_select_db("test",$conn);
return $conn;
} // end func

?>
<?
//screen.php
/**
* Short description.
* 把這些超文本被作為一個函數的原因,是為了在其他PHP文件中不包含超文本,達到PHP程序和超文本分離的目的
* Detail description
* @paramnone
* @global none
* @since1.0
* @access private
* @return void
* @update date time
*/
function screen()
{
?>
<FORM METHOD=POST ACTION="d.php">
<INPUT TYPE="text" NAME="i">
<INPUT TYPE="submit">
</FORM>
<?
} // end func
?>
希望上面的例子能被加到FAQ,回頭我就不用老是自己保存著這個程序啦 ^_^

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 松下纱荣子在线观看 | 欧美一区二区三区四区在线观看 | 久久综合给合久久狠狠狠97色69 | 欧美成人高清免费大片观看 | 911亚洲精品 | 国产午夜精品理论片小yo奈 | 狠狠色欧美亚洲狠狠色www | 在线观看欧美一区 | 久久天天躁夜夜躁狠狠躁2015 | 免费无遮挡网站 | 性欧美孕妇孕交tv | 偷青青国产精品青青在线观看 | 亚洲国产日韩无在线播放 | 日韩男人天堂 | 成人欧美一区二区三区小说 | 亚洲天天做夜夜做天天欢人人 | 日日拍夜夜嗷嗷叫狠狠 | 日韩毛片 | 国产自在自线午夜精品 | 国产男女爽爽爽免费视频 | 欧美性喷潮xxxx | 亚洲日本在线免费观看 | 欧美日本一级在线播放 | 99精品国产费观看视频 | 欧美国产亚洲精品a第一页 欧美国产亚洲精品高清不卡 | 一个人看的www视频在线 | 老司机精品一区在线视频 | 亚洲激情网站 | 日本 黄 a | 欧美日韩国产在线成人网 | 斗罗大陆免费观看樱花 | 久久精品免费观看久久 | 欧美在线视频精品 | 国产精品毛片大码女人 | 日本激情网址 | 亚洲欧美无人区乱码 | 欧美成人四级剧情在线播放 | 天天做天天爱天天爽天天综合 | 91视频欧美| 国产精品久久久久久久久久日本 | 久久国产精品亚洲一区二区 |