2016-12-02 4 views
0

の未知のタイプを持つ関数は、私がPHP:パラメータ

public function calculateAge() 
{ 
// do calcualtions here 
} 

としての機能を持っており、この関数は、引数が異なるタイプなどのオブジェクトを受け入れる必要があります。たとえば、

$dog = new Dog(); 
calculateAge($dog); 

$cat = new Cat(); 
calculateAge($cat); 

ご覧のとおり、私はdogオブジェクトとcatオブジェクトを関数に渡そうとしています。異なる型オブジェクトを引数として取るように、calculateAge関数をどのように定義できますか?どのようにして不明な型のパラメータを取るかを書くことができます。

+0

クラスの機能を持っていないのはなぜ? –

+8

あなたの犬と猫のクラスを共通のインターフェース(例えば 'Animal')に拡張し、そのインターフェースにタイプヒントを入力してください –

+2

あなたは本当にあなたの宿題をしてください。 – RiggsFolly

答えて

0

私は、あなたの関数calculateAgeが渡されたオブジェクトの年齢を計算できることを確認する必要があると思います。たとえば、オブジェクトの年齢を計算するには(オブジェクトであるようです:))、関数calculateAgeはオブジェクトの型が何であっても、ジョブを実行するgetAgeというメソッドがあることを認識しています。 calculateAgeで行う必要があるのは、渡されたオブジェクトのgetAgeです。

あなたは、インスタンスのためにこれを行うことができます。

interface Animal 
{ 
    public function getAge(); 
} 

// The same thing for the class Dog 
class Cat implements Animal 
{ 
    public function getAge() 
    { 
      // code to calculate age 
    } 
    ... 
} 

public function calculateAge(Animal $animal) 
{ 
    echo $animal->getAge(); 
} 

$dog = new Dog(); 
calculateAge($dog); 

$cat = new Cat(); 
calculateAge($cat);