扩展ArrayObject失败实例ArrayObject的PHP类

扩展ArrayObject失败实例ArrayObject的PHP类,php,Php,对PHP来说相当陌生 我有一个扩展了ArrayObject的类,然后这个类被传递给其他地方的函数,它运行一个检查,看看这个类是ArrayObject类型还是Array类型,请原谅这个术语 这是一节有问题的课: use ArrayObject; use ArrayAccess; class Parser extends ArrayObject implements ArrayAccess { public $data = []; //Custom functions &am

对PHP来说相当陌生

我有一个扩展了ArrayObject的类,然后这个类被传递给其他地方的函数,它运行一个检查,看看这个类是ArrayObject类型还是Array类型,请原谅这个术语

这是一节有问题的课:

use ArrayObject;
use ArrayAccess;

class Parser extends ArrayObject implements ArrayAccess
{
     public $data = [];

     //Custom functions & ArrayAccess interface functions all present below..
}
所以在另一节课上

class SomeClass 
{
   public function __construct()
   {
       $this->expectingArrayObjectType = new Parser();

       $this->config($this->expectingArrayObjectType);
   }

   private function config($name, $value = null)
   {
        if($name instanceof ArrayObject || is_array($name)) {
             //This never gets hit..    
        }
   }
}
事实上,我通过改变来解决这个问题

$this->config($this->expectingArrayObjectType);
对此

$this->config($this->expectingArrayObjectType->data);
这是完全可以理解的(据我所知),这让我很困惑,因为我正在反向工程一个friends代码,他们正在传递解析器对象,它正在检查ArrayObject类型,而我的不是lol

有人能分享任何见解吗


干杯

事实上,您在
public$data=[]处有语法错误行。应该是
public$data=array()
我不明白您试图通过扩展ArrayObject并引入
public$data
数组来实现什么?@TigranTokmajyan实际上,从PHP 5.4开始,这在语法上是正确的+