2016-05-18 5 views
0

MVCパターンを使用して開発されたPHP Webサイト。私はクラスのすべての関数でコンストラクタを使用して作成されたオブジェクトにアクセスしたい。私はis_objectをチェックしているので、私はオブジェクトをもう一度作成します。__constructで作成されたPHPオブジェクト

MVCパターンをシミュレートしようとすると、Object Accessible: $this->ldap Logged In!というコードが正常に動作します(コード)。しかし、私の実際のウェブサイトでは、Non-Object: $this->ldap Logged In!

どうしたのでしょうか?とにかく は何ですか?

class ldap{ 
    function ldap_userAuth(){ 
     return TRUE; 
    } 
} 

class commonfunctions { 
    private $ldap; 
    public function __construct(){ 
     $this->ldap=new ldap(); 
    } 
    function userLogin(){ 
     if(!is_object($this->ldap)){ 
      $this->ldap=new ldap(); 
      echo 'Non-Object: $this->ldap'.PHP_EOL; 
     } 
     else{ 
      echo 'Object Accessible: $this->ldap'.PHP_EOL; 
     } 
     if($this->ldap->ldap_userAuth()){ 
      return TRUE; 
     } 
     else{ 
      return FALSE; 
     } 
    } 
} 

class Model extends commonfunctions { 
} 

class Controller { 
    public $model; 

    public function __construct(){ 
     $this->model = new Model(); 
    } 

    public function invoke(){ 
     if($this->model->userLogin()){ 
      echo 'Logged In!'.PHP_EOL; 
     } 
     else{ 
      echo 'Logged Out!'.PHP_EOL; 
     } 
    } 
} 

$controller = new Controller(); 
$controller->invoke(); 

注: - クラスは、私の実際のウェブサイトのための上記の順に含まれています。 上記のコードスニペットは正常に機能しています。ライブウェブサイトでのみ問題が発生しています。コンストラクタが呼び出されていることを確認する

class Model extends commonfunctions { 
    public function __construct(){ 
     parent::__construct(); 
    } 
} 

答えて

0

は、このようなModelクラスに親の__constructメソッドを呼び出してみてください。

+0

コンストラクタは 'parent :: __ construct();'を使わずに呼び出され、オブジェクトが作成されます。私のための問題は、 '$ this-> ldap'を使用しようとするときです。それはある時点で破棄されます。ですから、 'is_object'をチェックしてもう一度オブジェクトを作成します。私はクラス内のすべての関数でこれを行うことはできません。解決策をまだ探しています –

+0

上記のコードに基づいてオブジェクトが破壊されることはありません! コードに関する追加情報をご提供いただけますか? –

関連する問題