指定函数参数的对象类型?

时间:2012-07-07 16:55:13

标签: php oop function

我刚刚使用php进入OOP并且偶然发现如果我将对象类型放在函数定义中的名称之前,我正在使用的IDE可以解析对象的成员函数和数据成员。 / p>

例如:

public function foo(car $car) { }

相反:

public function foo($car) { }

第一种方法是否合法且首选?

感谢您帮助一个菜鸟: - )

2 个答案:

答案 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

这意味着,当您注入一个对象时,您应该期望该对象具有特定的方法足迹,然后您可以在其上调用它。多数民族是如何运作的。