类自身循环,直到php内存不足且db连接过多

类自身循环,直到php内存不足且db连接过多,php,sql,oop,memory,Php,Sql,Oop,Memory,我有一些类扩展了Loader类。那些在Loader类中声明的类,就像这样- class Loader { public $sql; public $logger; public $view; public $model; public $config; public $url_data; public function __construct() { $url_accepted = $_GET['url

我有一些类扩展了Loader类。那些在Loader类中声明的类,就像这样-

class Loader
{   

    public $sql;
    public $logger;
    public $view;
    public $model;
    public $config;
    public $url_data;



    public function __construct()
    {
        $url_accepted = $_GET['url'];
        $this->config = $GLOBALS['config'];

        $database_connection = some array...
        $this->sql = new dbHandler($database_connection);

        $this->logger = new logger();

        $this->view = new view();
        $this->view->set_view($config['view']['view']);
        $this->model = new model();
        ...
        require_once("app/controllers/frame.php");
视图和模型是扩展加载器和框架扩展加载器的类,但框架也是扩展的。
出于某种原因,它会自动循环,直到sql有很多连接,php内存不足,而index.php是唯一声明加载程序的地方-

require_once("app/includes/loader.php");

$loader = new Loader();
我不知道是什么问题,但我知道源是视图和模型的声明。model和view都没有对Loader的引用,除了在“extends Loader”和使用$this访问Loader值中

pastebin上的代码-

有人能帮我解决这个问题吗

model和view都没有对Loader的引用,除了在“extends Loader”和使用$this访问Loader值中

如果是这样的话

class Loader {
  // ...
  public function __construct() {
    // ...
    $this->view = new view();
    // ...
    $this->model = new model();
  }
}

class view extends Loader { 
  // ...
}

class model extends Loader {
  // ...
}
您需要覆盖
\u construct()
方法。如果没有,模型/视图类将使用Loader的
\uu construct()
方法,该方法创建模型/视图对象->递归

还有一个问题,“扩展加载器”您是说您的模型和视图类扩展了加载器吗?如果是这种情况,那么很明显它将经历递归。 如果是这种情况,则需要覆盖视图和模型中的
\uu构造()

class View extends Loader 
{ 
   public function __construct() 
   { 
     // do something
   }
}

class Model extends Loader 
{
   public function __construct() 
   { 
     // do something
   }
}

我希望您能理解原因,否则我很乐意解释。

对不起,我不明白您的问题,我无法将prime_类和sub_类与loader类联系起来。我编辑了代码@RohanWell,我理解了,所以我把Loader上的uu结构改为load。现在它工作得很好,除了一件事,在将变量视图、模型传递到框架类时,所有变量的值都为NULL,尽管我从未将它们置为NULL。值像什么?您正在使用index.php作为控制器的路径,对吗?我不确定我是否理解你所说的在Loader上构造load和frame类的意思。Loader类有一个名为“load”的函数,load函数是从index.php调用的。这是Loader structer-Index->Loader->$This(视图、模型、sql、记录器、配置、url_数据)->(传递到)->frame.php,它是一个抽象类,由用户选择扩展。但是由于某些原因,$this值被传递到frame,但它们传递了null。请将您的代码从view、model、index和loader粘贴到pastebin.com,并添加到您的问题的链接,这样其他人也可以在这方面帮助您:)XD,这就是我想问您的,马上。
class View extends Loader 
{ 
   public function __construct() 
   { 
     // do something
   }
}

class Model extends Loader 
{
   public function __construct() 
   { 
     // do something
   }
}