2017-09-25 50 views
0

最近我开始在php中学习多线程。我好奇如何螺纹类使用对象作为阵列在下面的代码螺纹类的pthreads如何将对象当作数组对待

<?php 
$safe = new Threaded(); 

while (count($safe) < 10) { 
    $safe[] = count($safe); 
} 

var_dump($safe->chunk(5)); 

如果我应用相同的逻辑在一个普通的类它给出了一个致命的错误。

Fatal error: Cannot use object of type XYZ as array 
+0

是你的实际错误还是XYZ被别的东西代替? – GrumpyCrouton

+0

嗯,我正在做一个普通的类,并将其用作一个数组并得到错误 –

回答

0

PHP提供了Iterator接口,让您的自定义类与foreach循环工作,等

您需要实现所有五种上市接口方法

  • 当前
  • 关键
  • 未来
  • 倒带
  • 有效

你内心的每一种方法做什么,完全由你 - 通常他们用来揭露一个数组,否则私人的对象,或提供一些额外的过滤的/ etc 。文档中有很多例子。

任何这样的对象都可以使用iterator_to_array函数将其可迭代内容复制到本机数组中。

对于来自pthreads的Threaded类,它是一个内部PHP类,它直接实现Traversable接口。这在用户土地上是不可能的。