未找到类(在PHP中)
此代码工作正常:未找到类(在PHP中),php,fatal-error,classnotfound,Php,Fatal Error,Classnotfound,此代码工作正常: <?php namespace NamespaceA; class A extends \NamespaceB\B {} namespace NamespaceB; class B {} <?php namespace NamespaceA; class A extends \NamespaceB\B {} namespace NamespaceC; class C {} namespace NamespaceB; class B extends \Name
<?php
namespace NamespaceA;
class A extends \NamespaceB\B {}
namespace NamespaceB;
class B {}
<?php
namespace NamespaceA;
class A extends \NamespaceB\B {}
namespace NamespaceC;
class C {}
namespace NamespaceB;
class B extends \NamespaceC\C {}
<?php
class A extends B {}
class B {}
类在使用之前必须先定义。如果希望类A扩展类B,则必须首先定义类B。类的定义顺序很重要
编辑:
找到更多:
经过一些研究,很明显,实际上您可以在声明类之前使用它。但是,类和所有父类的声明必须在同一个文件中
因此,如果在一个文件中声明父类,在另一个文件中声明子类,那么它将不起作用
此外,必须首先声明父类。之后,您可以扩展它们
编辑编号2:
<?php
class A extends B {}
class B extends C {}
class C {}
好吧,我对这个问题做了更多的研究。可能有一些内部实现细节,目前允许一个案例工作(我猜是关于自动加载的),但是这是可以随时更改的,永远不应该依赖的 首先使用include_once()添加索引文件中的所有文件,当扩展到任何类时,首先实例化该父类。示例:
index.php-->
<?php
include_once('parentClass.php');
include_once('childClass.php');
$parentObj = new parent();
$childObj = new child();
?>
child.php-->
<?php
class child extends parent{
function __construct(){
}
}
?>
index.php-->
child.php-->
那么,您如何解释代码可以正常工作运行第二个示例代码(不使用不同的文件)“当声明扩展类时,父类还不存在,这将导致扩展类也不存在。”根据我的发现,解释器首先读取声明。所以对于第三个例子,它声明了C,然后B扩展了C,然后A扩展了B。在例子2中,C被声明,然后A声明了B,还没有声明,所以它抛出了一个错误。这个答案没有解释问题所揭示的行为。完全同意这个部分“这在任何时候都可能改变,永远不应该被依赖。”见鬼的兔子洞:这是有效的php-r'类B扩展C{}类D扩展C{}类E扩展D{}类C{}
,但这不是php-r'类B扩展C{}类D扩展C{}类C扩展a{}类E扩展D{}类a{}
index.php-->
<?php
include_once('parentClass.php');
include_once('childClass.php');
$parentObj = new parent();
$childObj = new child();
?>
child.php-->
<?php
class child extends parent{
function __construct(){
}
}
?>