• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    一個用session傳遞對象的典型例子

    發布: 2007-7-14 19:53 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 8次 | 進入軟件測試論壇討論

    領測軟件測試網 首先,你的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."<br>";
            
        } // 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<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
    * @param      none
    * @global     none
    * @since      1.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
    * @param      none
    * @global     none
    * @since      1.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,回頭我就不用老是自己保存著這個程序啦 ^_^

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>