2012-04-26 9 views
2

Yiiフレームワークのモデルで2つのメソッドをオーバーロードしたいとします。Yiiフレームワークのモデルでオーバーロードされるメソッド

ここで私は、Javaのようにメソッドオーバーロードの概念を持っていると言っておきたいのですが、メソッドは同じ名前ですが、そのメソッドに渡すパラメータの数が異なります。したがって、これらの類似の概念は、PHP Yiiフレームワークのモデルクラスに適用できます。 Yiiのモデルクラスで は、私のような二つの方法、

public function test(){ 
    //method logic 
} 
public function test(int parameters){ 
    //method logic 
} 

それはこれらのように作成することが可能ですを作成したいですか? "同じ機能を定義できません"のようなエラーが表示されます。

+1

PHPはメソッドのオーバーロードをサポートしていません。私はあなたが何か違うことを意味すると思いますが、あなたが達成したいことは不明です。 – KingCrunch

+0

コードを使用して、メソッドに渡されるデータのタイプを検出することができます(または、パラメータなしの場合はデフォルトを使用します)。 'is_array'、' is_object'など、正しいタイプの出力を提供します。これは、私が知っている最も近いメソッドのオーバーロードのPHPで –

+3

私はあなたが言っているものは正確にメソッド**過負荷**ではないと思うが、**メソッドをオーバーライド**です。正確な要件を知っているか、サンプルコードを少なくともあなたが思うように思ってください。必要に応じて、それを修正するのを手助けすることができます。 –

答えて

3

あなたが話していることは、PHPではサポートされていません。 function argumentsのデフォルト値を試してみることもできます。たとえば。

function foo($int_param = 0) // do something 

また、func_get_argsを使用することもできます。パラメータを受け入れないように関数を定義し、func_get_args()を使用して引数を取得します。

これらのアプローチは、実装しようとしている機能の間に大きな違いがない場合に適しています。

関連する問題