我想使用名为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();
}
}