写了一个类且使用了命名空间:`
namespace a\b;
class demo extends xxx{
<code>……</code>
}`
在另一个文件中使用:`
use a\b\Demo;
$d = new Demo();
`
提示:XXX类找不到。
我自己的类使用了命名空间,继承的XXX类是属于第三方的类库,第三方类库并没有使用命名空间,使用的是require_once文件包含。
我不知道这个问题怎么去解决,把第三方类库全改成命名空间形式的不太现实,总不能每当使用到第三方时都这么做吧,工程量很大。
Zend框架2是一个开源框架,使用PHP 5.3 +开发web应用程序和服务。Zend框架2使用100%面向对象代码和利用大多数PHP 5.3的新特性,即名称空间、延迟静态绑定,lambda函数和闭包。 Zend框架2的组成结构是独一无二的;每个组件被设计与其他部件数的依赖关系。 ZF2遵循SOLID面向对象的设计原则。 这样的松耦合结构可以让开发人员使用他们想要的任何部件。我们称之为“松耦合”
344
立即学习“PHP免费学习笔记(深入)”;
写了一个类且使用了命名空间:`
namespace a\b;
class demo extends xxx{
<code>……</code>
}`
在另一个文件中使用:`
use a\b\Demo;
$d = new Demo();
`
提示:XXX类找不到。
我自己的类使用了命名空间,继承的XXX类是属于第三方的类库,第三方类库并没有使用命名空间,使用的是require_once文件包含。
我不知道这个问题怎么去解决,把第三方类库全改成命名空间形式的不太现实,总不能每当使用到第三方时都这么做吧,工程量很大。
立即学习“PHP免费学习笔记(深入)”;
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>这两个条件缺一不可!!!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号