gpt4 book ai didi

php - 找不到类(在 PHP 中)

转载 作者:搜寻专家 更新时间:2023-10-31 21:08:29 24 4
gpt4 key购买 nike

这段代码没有问题:

<?php
namespace NamespaceA;
class A extends \NamespaceB\B {}

namespace NamespaceB;
class B {}

但为什么以下代码会导致 fatal error :在...文件中找不到类“NamespaceB\B”

<?php
namespace NamespaceA;
class A extends \NamespaceB\B {}

namespace NamespaceB;
class B extends \NamespaceC\C {}

namespace NamespaceC;
class C {}

而且这段代码也可以正常工作:

<?php
namespace NamespaceA;
class A extends \NamespaceB\B {}

namespace NamespaceC;
class C {}

namespace NamespaceB;
class B extends \NamespaceC\C {}

更新:没有任何 namespace ,还有 fatal error :在...文件中找不到类“B”:

<?php

class A extends B {}

class B extends C {}

class C {}

工作没有问题:

<?php

class A extends B {}

class B {}

最佳答案

http://php.net/manual/en/keyword.extends.php

类必须在使用前定义。如果你想让A类扩展B类,你必须先定义B类。定义类的顺序很重要。

编辑:

发现更多:

Fatal error when extending included class

经过一些研究,很明显,实际上您可以在声明类之前使用它。但是,类和所有父类的声明必须在同一个文件中。

因此,如果您在一个文件中声明一个父类,而在另一个文件中声明一个子类,它将不起作用。

此外,您必须先声明父类。之后您可以扩展它们。

编辑数字 2:

好的,所以我对这个问题做了更多的研究。可能有一些内部实现细节目前允许一个案例工作(我的猜测是关于自动加载的东西)但是这是随时可能改变的东西并且永远不应该依赖。

关于php - 找不到类(在 PHP 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27627045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com