PHPでSESSIONでオブジェクトを保存

6994 ワード

Sessionの機能は,ユーザの状態を追跡し,ユーザの要求を保護するプロセスである.
sessionで変数や配列を保存するのに使ったことがあるかもしれませんが、実際にはSessionでオブジェクトを保存する機能がより強く、開発者の時間を大幅に減らすことができます.phpのSessionでは、データベース接続やファイルハンドルなどの参照を保存できないオブジェクトしか保存できません.
phpの例を次に示します.
まずセッションを作成します.phpファイルで、Webクラスを作成します.
phpコードは次のとおりです.
<?php
//    Web 
    class Web{
        private $webName;
        private $webUrl;
        private $webDescribe;
        public function __construct($webName,$webUrl,$webDescribe){
            if (!$webName){
                throw new Exception('       ');
            }
            if (!$webUrl){
                throw new Exception('  url    ');
            }
            if (!$webDescribe){
                throw new Exception('          ');
            }
            $this->webName = $webName;
            $this->webUrl = $webUrl;
            $this->webDescribe = $webDescribe;
        }
        public function getwebName(){
            return $this->webName;
        }
        public function getwebUrl(){
            return $this->webUrl;
        }
        public function getwebDescribe(){
            return $this->webDescribe;
        }
    }

次にcreateWebを作成する.phpファイル:
phpコードは次のとおりです.
<?php
require_once './session.php';
session_start();
$_SESSION['website'] = new Web('php   ', 'http://www.phpddt.com', '  php  ,    web    ');
//  website    
print_r($_SESSION['website']);
?>

上記のphpインスタンスの実行結果は、次のとおりです.
Web Object

(

    [webName:Web:private] => php   

    [webUrl:Web:private] => http://www.phpddt.com

    [webDescribe:Web:private] =>   php  ,    web    

)

最後にセッションを読むphpファイルを作成します
phpコードは次のとおりです.
<?php
require_once 'session.php';
session_start();
echo '       :'.$_SESSION['website']->getwebName().'      :'.$_SESSION['website']->getwebUrl()
 
.'     :'.$_SESSION['website']->getwebDescribe();
?>

セッションの使い道は言うまでもない.一般的にsessionには、基礎タイプのデータや文字列などを保存するだけです.しかし、自分で定義したクラスを保存したい場合は、いくつかのステップに分けます:1)クラスを得る;2)シーケンス化クラス;3)session賦課;4)sessionを取得し,クラスを解析する.コードは以下の通りである:既存のカスタムクラス:User.phpname;     }     public function User($name,$age){         $this->name = $name;         $this->age = $age;     }?>1)取得クラス:$nowUser=new User("some",22);2)シーケンス化クラス:$saveUser=serialize($nowUser);3)session賦課:$SESSION["User"] = $saveUser;//もちろん、中間変数:$saveUser;4)sessionを取得し,クラスを解析する.別のページ:include("User.php");$myUser = unserialize($_SESSION["User"]);2つの重要なステップは、シーケンス化と逆シーケンス化です.保存するオブジェクトはカスタマイズされているため、sessionはどのフォーマットで保存するか分からないため、PHPの値を保存または転送し、タイプや構造を失うことなくシーケンス化します.使用するときにそのクラスの構造で解析すればよい.もちろん、解析する前にそのクラスを導入します.さもないと解析の時に間違いを報告します.まだ導入されていないので、構造は言えません.