0

我正在研究使用 Guzzle 框架的 AWS 文档。我必须在这里处理名称空间,但我无法让它工作。我浏览了文档和示例,了解到我们可以为使用命名空间的项目提供包。

我继续尝试了一个简单的示例,但没有成功。这是示例:这是index.php

     use My\Full\Classname as Another;  //Also tried use My\Full\Classname
     $obj = new Another;                //with  $obj = new Classname;    
     echo $obj->add();

我有这样Classname.php的目录结构My->Full->Classname.php

     <?php
        class Classname{
        public static function add(){
                return 2+2;
            }
         }
     ?>

我正在尝试调用该函数index.php但出现错误:

Fatal error: Class 'Another' not found in C:\wamp\www\guzzleEx\index.php on line 19

这是我实例化 Classname 对象的行 $obj = new Another;

我犯了什么错误?是否有任何INI需要更新或任何其他配置问题?我怎样才能使代码工作?如果您include对 Classname.php 使用正常的,它可以正常工作。

4

1 回答 1

1

命名空间需要显式声明,它们不是来自某个目录结构。

namespace My\Full;因此,如果您的 前面没有一行class Classname,那么您的类不在任何命名空间中,而是在根命名空间中。

因此,您不能将其用作\My\Full\Classname,而是\Classname甚至Classname直接使用。

于 2013-09-20T06:47:09.277 回答