Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用类扩展时超出了致命的允许内存大小_Php_Class_Methods_Extend_Public Method - Fatal编程技术网

Php 使用类扩展时超出了致命的允许内存大小

Php 使用类扩展时超出了致命的允许内存大小,php,class,methods,extend,public-method,Php,Class,Methods,Extend,Public Method,当我使用大量的类扩展时,会出现以下错误: 致命错误:第5行的C:\Web\private\bootstrap.php中允许的内存大小134217728字节已用完(试图分配65488字节)(我确保这实际上是下面代码的行。我的原始代码是第22行。) 这是我的代码(大量删节,但仍然会产生错误。我的原始代码有This->This6级深!) 这应该只输出一个hello,但不幸的是,它会抛出错误。是什么导致了这个问题?递归 当您实例化系统时,您正在扩展测试,该测试调用构造()方法,该方法反过来创建一个新的系

当我使用大量的类扩展时,会出现以下错误:

致命错误:第5行的C:\Web\private\bootstrap.php中允许的内存大小134217728字节已用完(试图分配65488字节)(我确保这实际上是下面代码的行。我的原始代码是第22行。)

这是我的代码(大量删节,但仍然会产生错误。我的原始代码有
This->This
6级深!)

这应该只输出一个
hello
,但不幸的是,它会抛出错误。是什么导致了这个问题?

递归

当您实例化
系统
时,您正在扩展
测试
,该测试调用
构造()
方法,该方法反过来创建一个新的
系统
对象,该对象扩展
测试
并调用
构造()
,等等


如果
system
扩展了
test
,为什么要在
test
类中创建一个新的
system
对象?

递归

当您实例化
系统
时,您正在扩展
测试
,该测试调用
构造()
方法,该方法反过来创建一个新的
系统
对象,该对象扩展
测试
并调用
构造()
,等等


如果
system
扩展了
test
,为什么要在
test
类中创建一个新的
system
对象?

您编写的代码会导致无限的递归循环

当您创建一个新测试时,它会创建一个新系统,它会调用测试的构造函数(因为它继承了它),从而创建一个新系统。。。重复一遍

如果您从系统中删除了固有功能,那么它将正常工作

class system { // System classes and methods.
    public function demo($string = 0){echo $string;}
}

您的代码导致了无限的递归循环

当您创建一个新测试时,它会创建一个新系统,它会调用测试的构造函数(因为它继承了它),从而创建一个新系统。。。重复一遍

如果您从系统中删除了固有功能,那么它将正常工作

class system { // System classes and methods.
    public function demo($string = 0){echo $string;}
}

您正在创建一个无限循环

当您尝试实例化
新测试()
时。您的构造函数创建一个新的系统对象(它本身是一个测试对象,您可以使用它来实例化另一个系统对象,一直到内存耗尽为止)


如果不需要系统对象来实例化新的系统对象,则应重写构造函数(甚至使用空函数)。

您正在创建一个无限循环

当您尝试实例化
new test()
时,构造函数会创建一个新的系统对象(它本身就是一个测试对象),然后它会实例化另一个系统对象,一直实例化到内存耗尽为止


如果不需要系统对象来实例化新的系统对象,则应重写构造函数(甚至使用空函数)。

或者如果他删除了实例化类的调用,而该类在
$this
;)中已经有引用,或者如果他删除了实例化一个类的调用,这个类在
$this
;)中已经有了引用,这是一个很好的观点。我的问题是,我希望有一个扩展位(如
$test->this->accessDB()
)可以访问数据库,数据库连接打开并包含在第一个类中,称为
$test
。我需要在没有扩展的情况下保留来自“父”类的数据库连接和数据。我可以这样做吗?数据库连接在哪里?在
测试中
或在
系统中
?您想在哪里使用它们-
测试
系统
?对不起,它们在
测试
中,但在
系统
中使用。由于应用程序的布局方式,它们必须留在
test
中。
system
扩展了
test
,因此通过继承,它将拥有
test
可用的所有属性和方法。如果
test
有一个名为
accessDB()
的方法,那么只需从
system
调用
$this->accessDB()
。哦,我的意思是,如果我从类中删除每个
扩展测试
,它还会继承吗?这是一个很好的观点。我的问题是,我希望有一个扩展位(如
$test->this->accessDB()
)可以访问数据库,数据库连接打开并包含在第一个类中,称为
$test
。我需要在没有扩展的情况下保留来自“父”类的数据库连接和数据。我可以这样做吗?数据库连接在哪里?在
测试中
或在
系统中
?您想在哪里使用它们-
测试
系统
?对不起,它们在
测试
中,但在
系统
中使用。由于应用程序的布局方式,它们必须留在
test
中。
system
扩展了
test
,因此通过继承,它将拥有
test
可用的所有属性和方法。如果
test
有一个名为
accessDB()
的方法,那么只需从
system
中调用
$this->accessDB()
。哦,我的意思是,如果我从类中删除每个
扩展测试
,它还会继承吗?