2010-12-10 8 views
0

プロパティが呼び出されたときにオブジェクトを自動作成する方法があるかどうか疑問に思っています。例:プロパティが呼び出されたときにオブジェクトを自動作成する

<?php 
    echo $myObj->myProperty 
?> 

このコードは、プロパティを読み取る前に$ myObjを開始しなかったため、もちろん失敗します。 「myObj」に基づいて自動的に$ myObjを開始する方法を探しています。

ような何か:私は__autoload($クラス名)について知っているが、すなわちで開始classcodeの唯一の作品は(含まれていることを

<?php 
class myObj { 
    public myProperty = 'BlaBla'; 
} 
echo $myObj->myProperty; //outputs BlaBla instead of failing 
?> 

)、それは後に何イムではありませんので。

+2

私はこの種のものの正当な使用を考えることはできません。なぜ、あなたは小道具にアクセスする前にオブジェクトを初期化できませんか? (私はあなたがそれがインスタンスであり、静的アクセサではないという特定の必要があると仮定しています) –

+0

データベースからいくつかのコンテンツをeval()するスクリプトがあるためです。このコンテンツには、まだ作成されていないオブジェクトへの呼び出しが含まれる場合があります。私は、*必要とされるかもしれないすべてのオブジェクトを作成することができましたが、必要でない場合はなぜそうするのですか?それはちょうどCPUの時間とメモリを奪うだろう – sunebrodersen

答えて

0

ちょうどこの質問を閉じるには、これは私がやってしまったものです:

preg_match_all("/\\\$(.*?)->/si", $code, $matches); 

Iループトラフコードからデータベースなどのオブジェクトへの参照を探します。

$xxxx-> 

そして、私はループが参照トラフと「loadConnectorがある

  foreach($matches[1] as $key=>$value) { 
      $$value = Connector::loadConnector($value); 
     } 

オブジェクトを作成します。

public function loadConnector($connector, $params = NULL) { 
    require_once $connector. ".php"; 
    $c_name = $connector; 
    return new $c_name($params);  
} 

これは私のファイル構造に基づいて当然であり、それはまた、これまでにいくつかのerrorhandlingが必要ですが、それは私の問題を解決するように見えます:)

BR/Sune

関連する問題