2012-01-04 17 views
5

PHPクラスのコンストラクタは、クラスの開始時に呼び出されないようです。インスタンス化した後、しかしPHPコンストラクタがインスタンス化時に呼び出されない

$Login = new CLogin(); 

、私は$GLOBALS['page_content']を検査する場合:後で同じファイルで、グローバルスコープで、私はクラスをインスタンス化しようと

public function __contruct() 
{ 
    $GLOBALS['page_content'] .= "<p>Constructor entered.</p>\r\n"; 

    try 
    { 
    $this->ConstructorBase(); 
    } 
    catch (Exception $e) 
    { 
    throw new Exception(
     "Error in ".__FILE__."(".__LINE__."): Constructor failed.", 
     CLoginError::ERROR_CANNOT_INSTANTIATE, $e); 
    } 
} 

:これは私のコンストラクタは次のようになりますコンストラクタが呼び出されなかったかのように空です。奇妙なことは、パブリックメンバー関数を呼び出すことができるということです。あなたはそれを見たい場合は、完全なソースはここに掲載されています

http://pastebin.com/D95YnUmS

+1

それはあなたがそこに持っている;) – Jakub

+1

コンストラクタのGLOBALSと例外は悪い習慣です – meze

+1

例外はコンストラクタ内で悪い習慣ではありませんが、実際にはどの場合でもtrigger_errorを推奨し、オブジェクトの作成中に発生します。私はGLOBALSでもどこでもGLOBALSを使用しないことに同意します...悪い悪い悪い習慣。 –

答えて

50

あなたはそれが__construct()する必要がありますあなたの関数__contruct()の名前。これは非常に一般的なエラーです。あなたはおそらく睡眠を取るべきです。

+7

この「タイプミス」が私を最後の3週間くっついてしまったと思う。^_^;;私はそれを地獄からのタイプミスと呼ぶつもりだと思う。生活し、学びます。ご協力いただきありがとうございます。私は再び前進してうれしいです。少なくとも、このプロセスでPHPのデバッグについて多くのことを学びました。 –

+0

はい、関数が呼び出されていない場合(オブジェクトのインスタンス化または通常の関数呼び出しのいずれか)、エラーが記録されていないと仮定すると、関数名を誤って入力した可能性が非常に高いです関数宣言で)。次回の幸運:D –

+0

ちょうど5分を上の2つを見つめ、疑問に思った。何が違うの?あなたが今私のように燃え尽きれば、最初のものは 's'が欠けている。 – teynon

関連する問題