Php 使用父级和子级的名称空间自动加载类

Php 使用父级和子级的名称空间自动加载类,php,namespaces,autoload,Php,Namespaces,Autoload,我读了几篇关于在php中使用名称空间的文章,但我还没有理解。我有3个文件: script.php和dog.php位于同一根文件夹abstr中。类animals.php位于cls文件夹中,dog扩展了animals 资料来源: cls/anives.php: namespace cls; abstract class Animals { .. } Dog.php(没有名称空间,因为它位于根文件夹中): script.php: function __autoload($cls){ $fi

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

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

资料来源:
cls/anives.php:

namespace cls;
abstract class Animals { .. }
Dog.php
(没有名称空间,因为它位于根文件夹中):

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");
但是我得到了类动物的
未找到异常
,并且
$file
只是
Animals.php
没有名称空间

  • 谁能告诉我如何获取名称空间并将其包含在
    \uu autoload
    函数的路径中

  • 还是对父级和子级使用相同的命名空间更好

  • 正如我所理解的,正确的名称空间=文件位置


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

    class Dog extends \cls\Animals { ... }
    
    class Dog extends \cls\Animals { ... }