私はphpでOOPを始めたばかりですが、ほとんど偶然に、使用しているIDEがオブジェクトのメンバー関数とデータメンバーを解決できる関数定義の名前の前にオブジェクトタイプを置くとわかりました。
例えば:
public function foo(car $car)
{
}
とは対照的に:
public function foo($car)
{
}
最初の方法は合法で好ましいですか?
初心者を助けてくれてありがとう:-)
間違いなく:タイプヒント。これはPHP自体の機能であり、IDEを使用すると、より便利なコード補完が可能になります。試してみて、間違ったタイプのオブジェクトを渡してください。これは、メソッドに渡された間違ったタイプに起因するバグをはるかに早く見つけるのに役立ちます。
class A{}
class B{}
function foo(A $a) { echo "OK";}
foo(new A);
foo(new B);
また、ドキュメントコメントも確認する必要があります(申し訳ありませんが、リンクはありません)。ほとんどのIDEは、それらを読み取って、追加のコード補完の提案にも使用できます。
/**
* @return MyObject
*/
function bar(){/* ..*/};
bar()->[Strg-Space]
実際、ベスト プラクティスは、特定のクラス名ではなく、インターフェイスをヒントにすることです。これは、オブジェクト指向アプリケーション設計におけるインターフェイス分離の原則にまでさかのぼります。
つまり、オブジェクトを注入する場合、そのオブジェクトには特定のメソッド フットプリントがあり、それを呼び出すことができると想定する必要があります。それがポリモーフィズムの仕組みです。