2017-05-30 5 views
0

私は定数を持つクラスを持っています。どのように私はactionWithParams()が現在のクラス定数を取得することができますか?今私はエラー「のインスタンスを」得た:呼び出しメソッドのエラーのインスタンスを解決する方法は?

<?php 
class MyClass 
{ 
    const PARAM_1 = 1; 
    const PARAM_2 = 2; 

    protected $plans; 


    // .. 

    public function actionWithParam(MyClass $param){ 
     //... 
    } 
} 

$obj = new MyClass(); 
$obj = $obj->actionWithParam(MyClass::PARAM_1); 
+0

できません。また、 'MyClass $ param'は' $ params'がクラス 'MyClass'のオブジェクトでなければならないことを意味します。 – AbraCadaver

答えて

1

あなたは整数ではなく、MyClassのインスタンスを渡しています。

MyClass::PARAM_1は整数で、これはactionWithParam()に渡します。あなたはそのメソッドをタイプヒントしているので、それはMyClassクラスの "インスタンス"である必要があります。これは整数ではありません。その "MyClass"ヒントを外すと、もうエラーは発生しません。

しかし、どうしてあなたはそのクラスのメソッドにクラス定数を渡していますか?このような

+0

_Oneは質問しなければなりません - なぜそのクラスのメソッドにクラス定数を渡していますか?それは非常に一般的ですが、どうしてそれらをグローバル定数として定義しますか? 'PDO :: FETCH_ASSOC'などがあります。 – AbraCadaver

+0

削除されたtypeHintが機能することはわかっています。クラス定数を使う必要があることを示す方法があるかもしれないと思った。 – Fatas

1

あなたのメソッド定義typehintsパラメータ:$paramは、MyClassのインスタンスでなければならないことがありますが、整数であるMyClass::PARAM_1を、渡している

public function actionWithParam(MyClass $param){ 

$obj = $obj->actionWithParam(MyClass::PARAM_1); 

これは上書きされます:あなたはおそらくこれを行うにはしたくない、また

public function actionWithParam(int $param){ 

:あなたは整数パラメータをtypehintすることができ、

public function actionWithParam($param){ 

または:ちょうどtypehintを削除$objオブジェクトインスタンスに返される値が何であれ。

関連する問題