php命名空间类的使用疑惑

发布于 2022-09-01 16:40:06 字数 352 浏览 13 评论 0

写了一个类且使用了命名空间:`
namespace a\b;
class Demo extends XXX{

……

}`

在另一个文件中使用:`
use a\b\Demo;
$d = new Demo();
`

提示:XXX类找不到。

我自己的类使用了命名空间,继承的XXX类是属于第三方的类库,第三方类库并没有使用命名空间,使用的是require_once文件包含。

我不知道这个问题怎么去解决,把第三方类库全改成命名空间形式的不太现实,总不能每当使用到第三方时都这么做吧,工程量很大。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

云胡 2022-09-08 16:40:06

a.php

<?php

namespace a\b;

class Demo extends \C {

    public function __construct()
    {
        echo 'This is Demo obj<br />';
    }

}

c.php

<?php

class C {

    public function out()
    {
        echo 'This is C obj<br />';
    }

}

b.php

<?php

require 'c.php';
require 'a.php';

use a\b\Demo;
$d = new Demo();
$d->out();

大概是这个意思吧?

如果第三方类没有设置命名空间,PHP默认会加上一个顶级命名空间'\'的

顺便注意文件的加载顺序

猛虎独行 2022-09-08 16:40:06
class Demo extends \XXX
洒一地阳光 2022-09-08 16:40:06

1.XXX 类以及这个类里面需要用到的类必须加namespace
2.代码必须修改:

namespace a\b;
use 路径/路径/XXX;   //此处必须将XXX继承的class 使用use操作符导入进来
class Demo extends XXX{

……
}`

这两个条件缺一不可!!!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文