Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP在创建对象时从数组中获取对象_Php_Arrays_Object - Fatal编程技术网

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
在方法内部工作,而不是在构造函数的参数内部工作。您不能在发送给构造函数的参数中引用新实例,因为在调用函数之前会对参数进行求值。