【问题标题】:zend_loader_autoloader does not seem to load abstract classzend_loader_autoloader 似乎没有加载抽象类
【发布时间】:2011-04-21 03:52:24
【问题描述】:

我掌握了 Zend_Autoload,但我拥有的一个非 Zend 类在扩展时没有加载。

自动加载器的初始化如下:

 // Initialise Autoloader
 $autoloader = Zend_Loader_Autoloader::getInstance();
 $autoloader->suppressNotFoundWarnings(true);
 $autoloader->setFallbackAutoloader(true);
 $autoloader->registerNamespace('lib_');
 }

这一切都适用于其他类。是否需要事先手动加载抽象类文件和实现接口?

【问题讨论】:

  • 自动加载器应根据请求加载所有类/接口文件。你能描述什么不起作用吗?有错误信息吗?
  • 只是无声的失败。我正在做一个使用几个 Zend 类的控制台脚本,我尝试在脚本末尾使用异常处理和多个 catch 块来实现一个可行的错误处理解决方案,但是即使 error_reporting 也没有出现很多错误设置为 -1(显示全部)和 display_error = 1。
  • 我在stackoverflow.com/q/5739615/604259发布了另一个关于与此问题相关的错误处理的问题。
  • 它会加载非抽象类,因为您只指定了抽象类吗?

标签: php zend-framework zend-autoloader


【解决方案1】:

Zend_loader_autoloader 实际上确实加载抽象类,类可以实现的任何接口的idem。甜蜜。

直接在 Zend_Loader 类中的几个调试调用很快就表明了我的问题: 我的文件名为 AbstractTableFetch.php ,该类名为 FetchTable。

自动加载器显然只有在文件名和类名相同的情况下才能工作。

【讨论】:

  • 是的,它就是这样工作的。它直接将类名映射到文件系统路径
猜你喜欢
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-11
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
相关资源
最近更新 更多