【问题标题】:PHP namespaces and autoloadingPHP 命名空间和自动加载
【发布时间】:2012-05-21 20:01:21
【问题描述】:

我对 PHP 比较陌生,或者对至少有点复杂并且有很多类的项目更感兴趣。到目前为止,使用 require_once 是可以的。然而,在一个新项目中,它会变得有点混乱,包含大量并非总是需要的。

我正在创建的是一个复杂的公共 Web 服务的客户端(这不在我的控制范围内)。然后该客户端将在应用程序中使用。

我查看了 spl_autoload_register 但并没有真正让它工作。这个项目的目录是:

webServiceClient/src/path/same/as/namespaces

可以说,将直接由所使用的应用程序使用的客户端类在

webServiceClient/src/path/same

该类必须“加载”所有可能的必需类。我怎样才能做到这一点?

【问题讨论】:

标签: php namespaces spl-autoload-register


【解决方案1】:
  1. 创建自动加载函数
  2. 将点 1 功能注册到 spl_autoload_registerlink
  3. 如果你只有__autoload作为自动加载功能,你不必 注册它。 link
  4. 编写您的自动加载函数

.

function __autoload($classname) {    
   $filename = ROOT."\\". $classname .".php"; //you can define ROOT by define('ROOT','dir path');    
   include_once($filename);    
}

所以,当你声明

$myclass = new webServiceClient\src\path\same;

autolaod 将包含ROOT.'webServiceClient\src\path\same.php'

【讨论】:

  • '/' 不是命名空间分隔符。有效的命名空间分隔符是“\”,我不确定您的自动加载器是否能正确处理它。
猜你喜欢
  • 2011-08-06
  • 2015-07-15
  • 2013-10-24
  • 2013-11-25
  • 2014-04-13
  • 2015-06-11
相关资源
最近更新 更多