【发布时间】:2013-09-20 06:43:32
【问题描述】:
我正在编写使用 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 或任何其他配置问题?我怎样才能使代码工作?如果你对 Classname.php 使用普通的include,它就可以正常工作。
【问题讨论】:
-
您仍然需要包含(或自动加载)类文件。
use所做的只是将命名空间类名别名为裸类名。 -
显示注册的自动加载器,并在
Classname定义文件的第一行包含namespace My\Full; -
什么是注册的自动加载器?我只是按照here 的例子
-
你知道你必须在每个你想使用该类的地方包含类代码吗?可以通过
include "path/File_With_Class.php"手动操作,也可以使用自动加载功能自动包含。 -
好吧,我弄错了命名空间会自动加载类,因为我在文档中经历的示例没有任何包含语句(猜想他们假设类是自动加载的),但这让我很困惑。我我正在尝试将 AWS api 中的 guzzle 框架与我面临的问题的应用程序集成。
标签: php class namespaces guzzle