PHP:将Object类型的数组传递给构造函数?

时间:2011-03-28 20:02:15

标签: php oop

在类中定义构造函数时,我最初有类似的东西:

public function __construct(MyClass $class){ ... }

但是我希望能够接受一组MyClasses,你怎么能在构造函数中定义它?

干杯

3 个答案:

答案 0 :(得分:2)

不是严格的类型转换,但会强制执行您正在寻找的内容。

public function __construct(array $classes){
        foreach($classes as $inst){
          if(!($inst instanceof ClassName)){
            trigger_error('Array of objects passed to constructor must contain instances of ClassName', E_USER_ERROR);
            }
            //perform actions
        }
    }

答案 1 :(得分:0)

您只能这样指定一种类型。

所以,一个对象,MyClass的实例:

public function __construct(MyClass $class){ ... }

array

public function __construct(array $data){ ... }

但是您无法指定您的方法只接受array MyClass - 这意味着您必须自己检查接收到的数组中的数据类型,在第二种情况下

答案 2 :(得分:0)

将$ class转换为数组。

public function __construct($class = array()) { }

public function __construct(array $class) { } 

进一步:

foreach($class as $instance) { 
      if(!$instance instanceof MyClass) { return false; }
}