>백엔드 개발 >PHP 튜토리얼 >php命名空间类的使用疑惑

php命名空间类的使用疑惑

WBOY
WBOY원래의
2016-06-06 20:29:50934검색

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

<code>……</code>

}`

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

提示:XXX类找不到。

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

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

回复内容:

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

<code>……</code>

}`

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

提示:XXX类找不到。

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

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

a.php

<code><?php namespace a\b;

class Demo extends \C {

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

}</code>

c.php

<code><?php class C {

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

}</code>

b.php

<code><?php require 'c.php';
require 'a.php';

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

大概是这个意思吧?

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

顺便注意文件的加载顺序

<code>class Demo extends \XXX</code>

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

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

……
}`
</code>

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.