2011-01-16 10 views
1

このタイプのエラーは処理できますか? spl_autoload_registerのようなものですが、機能のためです。未定義の関数ハンドラを呼び出す

基本的に、私がやろうとしています何:

Foo()->bar(); 

:私はこのような存在しない機能はFoo()を呼び出すときに、そう

class Foo { 
    public function bar() { 
    echo 1; 
    } 
} 

私はクラスを持っています可能なハンドラは、次のような関数Foo()を作成する必要があります。

function Foo() { 
    return new Foo(); 
} 
+0

興味深い質問を。それはそのような機能でなければならないのでしょうか?これを行う特別な理由はありますか?私は機能を "オートロード"する方法は考えられませんが、あなたの目標を達成する別の方法がありますか? – Nanne

+1

いいえ、これは不可能です:オートローディングはクラスのみです。 '$ foo = new Foo;を実行するだけで何が問題になりますか? $ foo-> bar(); '? – netcoder

+0

理由はちょうど少ないコードを書くことです: たとえば、私はこのコードを持っています: $ friends = new FriendsModel(); $ this-> friends = $ friends-> getUserFriends($ userId); 他の場所に$ friendsオブジェクトを使用しないので、次のようなものがあると便利です。 $ this-> friends = FriendsModel() - > getUserFriends($ userId); 私はFriendsModel()関数を作成できますが、このようなクラスがたくさんある場合は重複しているようですので、プロセスを最適化したいと考えています。 – romaonthego

答えて

0

オブジェクトの実際のインスタンスを必要としない場合は、静的クラスを使用しないでください。

class Foo { 
    public static function bar() { 
    echo 1; 
    } 
} 

Foo::bar(); 

その後、アプリでこれを行うことができます。

$this->fiends = FriendsModel::getUserFriends($userId); 
関連する問題