我到处都看到你不能扩展多个类......即
Class Foo{
//DO FOO STUFF HERE
}
Class Bar{
//DO BAR STUFF HERE
}
Class FooBar extends Foo,Bar{
//DO FOOBAR STUFF HERE
}
这是有道理的,但是:
Class Foo{
//DO FOO STUFF HERE
}
Class Bar extends Foo{
//DO BAR STUFF HERE
}
Class FooBar extends Foo{
//DO FOOBAR STUFF HERE
}
例如,您可以让多个子类扩展同一个父类吗?当我尝试这个时,出现内存不足错误,我尝试将内存限制增加到 512MB,但我仍然遇到内存不足错误...
检查内存使用情况的方法是什么,我的意思是这些是非常基本的类,即一个公共(public)变量,Bar 类为 Foo 类中的变量设置值......这是一个常量,但如果我等待 15-20 分钟,然后重试,就可以了。我的问题是,这台服务器有 32GB 的内存,我什至还尝试过将内存设置为 1024M 的愚蠢行为。
[编辑代码:]
Class CORE{
public $load;
public $data;
public $models;
public function __construct(){
$this->load=New Loader;
$this->data=New Database;
$this->data->db=New PDO(DSN);
}
public function __dev_email($subject, $message){
$to="dev@mydomain.com";
$headers="From: \"Error Checking\" <dev@mydomain.com>";
mail($to, $subject, $message, $headers);
}
}
class Loader extends CORE{
public function model($name){
if (file_exists("/var/www/models/".$name.".php")){
require_once("/var/www/models/".$name.".php");
$models[$name]=New $name;
}
}
}
class Error extends CORE{
$this->__dev_email("Bad Database Connection", "Invalid Connection Attempt was made. Please check the configuration.");
}
请记住,这不是所有代码,还有一个自动加载器和几个不同的文件,但这是一个基本版本,我刚刚检查过,我仍然遇到内存不足的错误。
最佳答案
问题是,当您初始化 CORE 时,它会创建一个扩展 CORE 的 Loader 的新实例。这会导致再次调用 CORE 构造函数,这又会创建另一个 Loader,这意味着它会永远持续下去,从而导致内存不足错误。
一种可行的方法是在初始化时将 CORE 传递给 Loader 类,如下所示。
Class CORE{
public $load;
public $data;
public $models;
public function __construct(){
$this->load=New Loader($this);
$this->data=New Database;
$this->data->db=New PDO(DSN);
}
public function __dev_email($subject, $message){
$to="dev@mydomain.com";
$headers="From: \"Error Checking\" <dev@mydomain.com>";
mail($to, $subject, $message, $headers);
}
}
class Loader{
private $core;
public function __construct($core){
$this->core = $core;
}
public function model($name){
if (file_exists("/var/www/models/".$name.".php")){
require_once("/var/www/models/".$name.".php");
$this->core->models[$name]=New $name;
}
}
}
class Error extends CORE{
$this->__dev_email("Bad Database Connection", "Invalid Connection Attempt was made. Please check the configuration.");
}
关于PHP 类继承 - 内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20358790/