0

我阅读了几篇关于在 php 中使用命名空间的文章,但我还没有得到它。我有 3 个文件:

script.php 和 dog.php 位于同一个根文件夹,abstr。动物类.php 位于 cls 文件夹中,而 dog 扩展了动物。

资料来源: cls/Animals.php:

namespace cls;
abstract class Animals { .. }

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

 class Dog extends Animals {...}

script.php

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了类 Animals 并且$file根本Animals.php没有命名空间......

  1. 谁能告诉我如何获取命名空间并将其包含在__autoload函数路径中?

  2. 还是对父子使用相同的命名空间更好?

  3. 据我了解,正确的命名空间=文件位置?

4

1 回答 1

0

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

class Dog extends \cls\Animals { ... }
于 2013-11-07T12:56:04.863 回答