PHP在创建对象时从数组中获取对象
使用此代码:PHP在创建对象时从数组中获取对象,php,arrays,object,Php,Arrays,Object,使用此代码: $notis = [ new InternalNotification([ $this->receiver()->associate(User::first()->id), 'product_id' => 1, 'notification_id' => 1, 'is_read' => false, ]), ]; 我如何确保在第3行
$notis = [
new InternalNotification([
$this->receiver()->associate(User::first()->id),
'product_id' => 1,
'notification_id' => 1,
'is_read' => false,
]),
];
我如何确保在第3行(
$this->
)上获得内部通知的当前实例?如果我正确理解这个问题,答案是“你不能”,因为一个相当基本的原因:它还不存在
PHP(和大多数语言)中的表达式是由内而外求值的-给出一个简单的示例var_dump(foo())
必须先运行函数foo()
,然后才能转储其输出
因此,您的代码与此等效:
$a=User::first()->id;
$b=$this->receiver()->associate($a);
$notis=[
新的内部通知([
b美元,
“产品标识”=>1,
“通知id”=>1,
'is_read'=>false,
]),
];
对于$b来说,没有办法预见到未来并得到一个还不存在的对象。最早可以访问该对象的是它的构造函数。您不能$this
指的是其方法包含该代码的对象。这个问题没有意义,您的数组看起来有点古怪。它是关联的还是数字的?如果您希望引用InternalNotification,然后将其分配给一个var,$this
在方法内部工作,而不是在构造函数的参数内部工作。您不能在发送给构造函数的参数中引用新实例,因为在调用函数之前会对参数进行求值。