【问题标题】:PHP Class Extension Exceeds RAM - CodeIgniterPHP 类扩展超出 RAM - CodeIgniter
【发布时间】:2012-05-16 06:26:23
【问题描述】:

我正在通过完全替换模型类来修改它。我还想打破不同类中的大多数组件,并在需要时加载它们。这个特定的类必须在构造函数中加载。我的类的一个简单模型如下:

Model.php

class CI_Model {
     function __construct(){
         load_class('Model_validations', 'core');
     }
 }

Model_validations.php

class CI_Model_validations extends CI_Model {
     private $validations = array();
     public function validates($field){
     }
 }

我从以下程序中得到的是:

致命错误:第 233 行 /xampp/htdocs/cms/system/core/Controller.php 中允许的内存大小为 134217728 字节已用尽(尝试分配 261904 字节)

此外,我尝试删除extends CI_Model,它工作得很好。 我们也可以说CI_Model_validations::validate() 方法在加载后立即被调用,但它是空的,我不知道这会如何导致问题。

有什么想法吗? 提前致谢。

【问题讨论】:

  • 您似乎更改了某些内容,导致 CI​​ 陷入循环。我不知道 CI 的来龙去脉,但我的猜测是你省略了课程的必修部分。

标签: php class codeigniter overloading extends


【解决方案1】:

这是因为 CI_Model 尝试加载 CI_Model_validations,CI_Model_validations 尝试再次加载 CI_Model,因为它继承自它。并且 CI_Model 尝试再次加载 CI_Model_validations 等等......

更新:我上面的假设从this answer 看来是错误的。它说 load_class 是一个单例加载器。

【讨论】:

  • 我相信你的解释是正确的。正是因为它是一个单例加载器。实际上,我需要该类的多个实例,以便它可以正常工作,从而产生了悖论。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-03-11
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2012-06-27
  • 2012-07-31
  • 2013-02-06
  • 2017-01-09
相关资源
最近更新 更多