缺少对象属性值

时间:2018-01-09 02:29:13

标签: php

我想使用名为send的静态方法通过单向方向发送一些数据,该方法将数据发送到Module接口的实例。然后,在名为Module的抽象类receiver中定义和实现的方法将通过实例化将数组转换为对象的data将发送的值分配给StorageClass属性。 。分配后,var_dump正确且可以预见地显示data属性中的可用数据:

/home/ahmad/Desktop/Vanilla/src/classes/Module/Module.php:16:
object(Vanilla\Collection\StorageClass)[22]
  protected 'storageContainer' => 
    array (size=1)
      'commentsCount' => int 10

但是在模块加载器中调用broadcast方法调用每个Module对象的广播方法后,我得到:

/home/ahmad/Desktop/Vanilla/src/classes/ModuleLoader/ModuleLoader.php:88:null

抽象类模块:

public $data;
public function receiver($value){
    $this->data = new StorageClass($value);
}

public function broadcast(){
    return null;
}

一个覆盖broadcast的模块:

public function broadcast()
{
    Broadcast::send(new Template(), ['commentsCount' => 10]);
}

最后,广播班:

class Broadcast
{
    public static function send(Module $to, $value){
        $to->receiver($value);
    }
}

同样ModuleLoader生成一组模块。然后它调用runBroadcaster方法:

private function runBroadcasters(){
    foreach ($this->moduleInstancesCollection as $instance){
        $instance->broadcast();
    }
}

0 个答案:

没有答案