我刚刚使用php进入OOP并且偶然发现如果我将对象类型放在函数定义中的名称之前,我正在使用的IDE可以解析对象的成员函数和数据成员。 / p>
例如:
public function foo(car $car)
{
}
相反:
public function foo($car)
{
}
第一种方法是否合法且首选?
感谢您帮助一个菜鸟: - )
答案 0 :(得分:3)
绝对:Type Hinting。这是PHP本身的一个特性,IDE只会让你更有帮助,为你提供更有用的代码完成。尝试一下并传递错误类型的对象。这将帮助您更早地找到传递给方法的错误类型导致的错误。
class A{}
class B{}
function foo(A $a) { echo "OK";}
foo(new A);
foo(new B);
另外你应该看一下doccomments(对不起,没有链接)。大多数IDE都能够阅读并使用它们来获得额外的代码完成建议。
/**
* @return MyObject
*/
function bar(){/* ..*/};
bar()->[Strg-Space]
答案 1 :(得分:1)
实际上,最佳做法是提示interface,而不是特定的类名。在面向对象的应用程序设计中,这可以追溯到Interface Segregation Principle。
这意味着,当您注入一个对象时,您应该期望该对象具有特定的方法足迹,然后您可以在其上调用它。多数民族是如何运作的。