ZF2 Session簡單使用(Zend\Authentication\Storage\Session.php)

ZF2  Session 

第一次記錄,用詞不當或說法不正確,請留言!

在zf2中要簡單使用session,你需要引入的文件:

use Zend\Authentication\Storage\Session as SessionStorage;

use後面的as相當於是別名,別名是我理解的,真正的說法是什麼就不知道了!as不要也行,實例化的時候下面兩者是等效的:

/*First one*/
$session = new Session();

/*Second one   SessionStorage是Session的別名*/
$session = new SessionStorage();

上面use引入的文件實際上就是 Zend\Authentication\Storage\Session.php 這個文件

當你使用這個類的時候,要實例化一個session類;

$session = new SessionStorage();

實例化的時候,你可以傳入幾個參數,構造函數如下:
    /**
     * Sets session storage options and initializes session namespace object
     *
     * @param  mixed $namespace
     * @param  mixed $member
     * @param  SessionManager $manager
     */
    public function __construct($namespace = null, $member = null, SessionManager $manager = null)
    {
        if ($namespace !== null) {
            $this->namespace = $namespace;
        }
        if ($member !== null) {
            $this->member = $member;
        }
        $this->session   = new SessionContainer($this->namespace, $manager);
    }


第一參數是命名空間:說白了就是在$_SESSION數組裏面再嵌入一個數組 ,這個命名空間可以防止session變量名重複的情況;

第二個參數:這個參數將會賦值給$member這個protected屬性  我貼一個結果:
Array
(
    [__ZF] => Array
        (
            [_REQUEST_ACCESS_TIME] => 1385702758.2296
        )

    [node] => Zend\Stdlib\ArrayObject Object
        (
            [storage:protected] => Array
                (
                    [storage] => {"30":"lrvp.backend.config.ajaxReboot","29":"lrvp.backend.config.ajaxGetStudio","28":"lrvp.backend.config.ajaxGetAddUserHtml","27":"lrvp.backend.config.ajaxDeleteUser","26":"lrvp.backend.config.ajaxUpdatePassword","25":"lrvp.backend.config.ajaxUpdateUser","24":"lrvp.backend.config.ajaxGetUser","23":"lrvp.backend.config.ajaxAddUser","22":"lrvp.backend.config.ajaxDbInit","21":"lrvp.backend.config.restoreDatabase","20":"lrvp.backend.config.backupDatabase","19":"lrvp.backend.config.upload","18":"lrvp.backend.config.ajaxGetTagList","17":"lrvp.backend.config.ajaxDeleteTag","16":"lrvp.backend.config.ajaxAddTag","15":"lrvp.backend.config.ajaxSetConfig","6":"lrvp.backend.config","33":"lrvp.backend.record.ajaxModeStatus","32":"lrvp.backend.record.ajaxUpdateRecord","31":"lrvp.backend.record.ajaxAddRecord","5":"lrvp.backend.record","14":"lrvp.backend.live.addRecord","4":"lrvp.backend.live","13":"lrvp.backend.video.mp4DownloadList","12":"lrvp.backend.video.ajaxGetRecordVideoPlayInfo","11":"lrvp.backend.video.AjaxVideoUpdate","10":"lrvp.backend.video.deleteComplete","9":"lrvp.backend.video.deleteChkAction","8":"lrvp.backend.video.AjaxPublishUpdate","7":"lrvp.backend.video.create","3":"lrvp.backend.video","2":"lrvp.backend","1":"lrvp"}
                )

            [flag:protected] => 2
            [iteratorClass:protected] => ArrayIterator
            [protectedProperties:protected] => 
        )

)


上面的結果我在實例化的時候,第一個參數傳了node,其他的兩個參數默認 ,(如果都不傳的,他們都會使用其默認值);

node是一個數組,裏面的[storage:protected]又是一個數組,再裏面的[storage]這個值就是屬性member的默認值( const MEMBER_DEFAULT = 'storage'; protected $namespace = self::NAMESPACE_DEFAULT;),這個鍵對應的值是本人傳的,值是json串,如果你在實例化的時候傳了第二個參數,這裏相應的會變化;第三個參數:還沒有用過,不大瞭解,希望瞭解的可以跟我普及一下,謝謝;


向session寫值可以使用下面的方法:
$session->write($content);

這個函數會將$content作爲值member屬性作爲鍵,存入到session數組的你所申明的命名空間數組(對應結果中的node數組)中,上面貼的結果代碼,我的命名空間就是 node

讀取session中的:
$session->read();

使用上面的方法基本上可以存取session中的值
$session->read();

Session.php這個文件代碼很短,總共才幾個方法,還可以去看看其他別的方法,都是些很簡單的方法,有時間去看看;







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章