gpt4 book ai didi

扩展名的 PHP 名称间距问题

转载 作者:行者123 更新时间:2023-12-04 17:04:48 26 4
gpt4 key购买 nike

我有一个文件,它在开头声明了一个命名空间,然后包含了两个定义类(如 X、Y 等)的支持文件。

现在在主文件中,声明命名空间后,我不能再创建扩展 X 的类。我没有在 X 或 Y 中声明命名空间,我假设主文件顶部的定义,在包含之前,将采用在乎那个?该类不应该默认解析为我的命名空间\X吗?

例如,在我的 PHP 文件中,我一开始就这样做:

namespace SGOAuth;
include 'OAuth.php';
include 'CURL.php';

后来我在这个文件中定义的一个类尝试:
class MyClass extends CURL {...}

但我收到错误:未找到 SGOAuth\CURL

谢谢!

最佳答案

除非 CURL类在命名空间 SGOAuth 中声明,当然它不会存在于命名空间 SGOAuth 中.仅仅包含一个文件并不意味着它是包含该文件的文件所在的命名空间的一部分(现在这是一个句子;))。这将使命名空间毫无意义。
CURL.php

// no namespace declaration, defaults to global namespace
class CURL { }
foo.php
// namespace declaration, all code *in this file* is in namespace Foo
namespace Foo;

// includes the CURL class, which is in the global namespace
include 'CURL.php';

new CURL; // error, class does not exist in this namespace
new \CURL; // works

所以 class CURL默认情况下在全局命名空间中。要扩展它,您需要 extends \CURL .

关于扩展名的 PHP 名称间距问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7199561/

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