类自身循环,直到php内存不足且db连接过多
我有一些类扩展了Loader类。那些在Loader类中声明的类,就像这样-类自身循环,直到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
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
}
}