首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为父级和子级使用命名空间的自动加载类

为父级和子级使用命名空间的自动加载类
EN

Stack Overflow用户
提问于 2013-11-07 12:36:21
回答 1查看 134关注 0票数 0

我读过几篇关于在php中使用名称空间的文章,但我还没有理解。我有3份文件:

script.php和dog.php位于相同的根文件夹中。类animals.php位于cls文件夹中,狗扩展动物。

资料来源:cls/Animals.php:

代码语言:javascript
复制
namespace cls;
abstract class Animals { .. }

Dog.php (没有命名空间,因为它位于根文件夹中):

代码语言:javascript
复制
 class Dog extends Animals {...}

script.php

代码语言:javascript
复制
function __autoload($cls){
     $file = str_replace('\\',DIRECTORY_SEPARATOR,$cls).".php";
    if(file_exists($file)){
        require_once $file;
    } else {
        throw new Exception("File not found: ".$file);
    }
}

$dog = new Dog("German Shepard");

但是我得到了类动物的Not found exception,而$file只是没有命名空间的Animals.php .

  1. 有人能告诉我如何获取命名空间并将其包含在__autoload函数的路径中吗?
  2. 还是为父级和子级使用相同的命名空间更好?
  3. 正如我所理解的,正确的名称空间=文件位置?
EN

回答 1

Stack Overflow用户

发布于 2013-11-07 12:56:04

如果Dog不在“cls”命名空间中,则必须为动物类编写完整的限定名:

代码语言:javascript
复制
class Dog extends \cls\Animals { ... }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19836156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档