Php 作为对象的力变量传递
我需要将传递变量的类型定义为泛型对象,如何定义 尝试:Php 作为对象的力变量传递,php,oop,object,Php,Oop,Object,我需要将传递变量的类型定义为泛型对象,如何定义 尝试: public function set($service = null, (object) $instance) { [..] } 可以stdClass帮助吗?怎么做 谢谢 不,在php中,并非所有类都派生自公共祖先 因此,毫无疑问,您可以使用当前php的实现来声明“任何类的对象”不,对象必须是某个类。您可以将任何类名作为对象的类型 public function set($service = null, ClassName $i
public function set($service = null, (object) $instance) {
[..]
}
可以stdClass
帮助吗?怎么做
谢谢 不,在php中,并非所有类都派生自公共祖先
因此,毫无疑问,您可以使用当前php的实现来声明“任何类的对象”不,对象必须是某个类。您可以将任何类名作为对象的类型
public function set($service = null, ClassName $instance) {
//now the instance HAS to be the object of the class
}
或者一个基本的技巧是自己创建一个基本类
Class GenericObject {}
$myobj = new GenericObject();
$myobj -> myCustomVar = 'my custom var';
//Now send it
public function set($service = null, GenericObject $instance) {
[...]
}
加布里埃尔
如果要检查变量是否为对象,可以执行以下操作:
public function set($service = null, $instance) {
if (!is_object($instance)) return null; //or whatever
[..]
}
你想用它来阻止什么?通过您的声明,如果变量不是对象,您将得到一个异常(它不会强制转换它)。因此,只有在函数中使用
的解决方案才是对象。
?@Gabriel Santos:是的。或者,如果可以的话,只需创建接口并在每个必需的类中实现它。谢谢你的帮助!我有一个“异常捕捉器”。我知道set
函数中的is_object
,但我想到了casts。@Gabriel Santos:确切地说,它与php中的“casts”无关,它被称为“type hinting”函数集($service=null,(object)$instance)
casting$instance
作为对象感谢您的示例,但是,它是针对服务定位器的,使用这种方法无法正常工作。