PHP数组与调用类堆叠?

PHP数组与调用类堆叠?,php,oop,Php,Oop,好的,我试着在我的控制器、模型和视图上创建一个调用类。但是,当我将类设置为调用类中的数组时,似乎是将数组堆叠在一起(按照调用的顺序),而不是将它们逐个排序 我的意思是: array(1) { ["Controller"]=> object(Controller)#2 (1) { ["classes"]=> array(1) { ["Controller_Pages"]=> object(Controller_Pages)#3 (1

好的,我试着在我的控制器、模型和视图上创建一个
调用
类。但是,当我将类设置为
调用
类中的数组时,似乎是将数组堆叠在一起(按照调用的顺序),而不是将它们逐个排序

我的意思是:

array(1) {
  ["Controller"]=>
  object(Controller)#2 (1) {
    ["classes"]=>
    array(1) {
      ["Controller_Pages"]=>
      object(Controller_Pages)#3 (1) {
        ["classes"]=>
        array(1) {
          ["View"]=>
          object(View)#4 (2) {
            ["params"]=>
            array(2) {
              ["Testing"]=>
              string(7) "a test."
              ["lolni"]=>
              string(7) "a test."
            }
            ["classes"]=>
            array(0) {
            }
          }
        }
      }
    }
  }
}
它似乎在按我所说的顺序排列

以下是Call类:

<?php

class Call {

    public $classes = Array();

    public function __call($name, $args)  {

        if(!is_object($this->classes[$name])) {

            require_once 'Slave/' . str_replace('_', '/', $name) . '.php';

            $this->classes[$name] = new $name();

            // to confirm that they are being stacked in the order they are being called

            echo $name . "\n\n";

        }

        return $this->classes[$name]; 

    } 

    public function dump() {

        var_dump($this->classes);

    }

}

在我看来,这真的没有问题

这里发生的事情很简单,
Controller
扩展了
Call
Controller\u页面
。 因此,当您执行
$this->class()时
控制器
控制器_页面
中,该方法将像来自控制器一样使用
$this->classes
,就像来自
控制器
一样


我真的不认为发生这种情况有什么问题,只要代码性感高效,对我来说没问题。

如果以后有人引用,下面是我为解决这个问题所做的

我基本上将
$classes
设置为
static
,并使用
self::
引用类:

<?php

class Call {

    public static $classes = Array();

    public function __call($name, $args)  {

        if(!is_object(self::$classes[$name])) {

            require_once 'Slave/' . str_replace('_', '/', $name) . '.php';

            self::$classes[$name] = new $name();

        }

        return self::$classes[$name]; 

    }

    public function dump() {

        var_dump(self::$classes);

    }

}

array(3) {
  ["Controller"]=>
  object(Controller)#1 (1) {
    ["classes"]=>
    array(0) {
    }
  }
  [0]=>
  object(Controller_Pages)#2 (1) {
    ["classes"]=>
    array(0) {
    }
  }
  ["View"]=>
  object(View)#3 (2) {
    ["params"]=>
    NULL
    ["classes"]=>
    array(0) {
    }
  }
}
<?php

class Call {

    public static $classes = Array();

    public function __call($name, $args)  {

        if(!is_object(self::$classes[$name])) {

            require_once 'Slave/' . str_replace('_', '/', $name) . '.php';

            self::$classes[$name] = new $name();

        }

        return self::$classes[$name]; 

    }

    public function dump() {

        var_dump(self::$classes);

    }

}