yyc*_*man 8 zend-framework namespaces phpexcel
我正在努力使用Zend Framework中的命名空间(至少我认为这是命名空间问题).
我想将PHPExcel集成到我的Zend项目中.相关文件结构如下:
/
-library
-ABCD
-PHPExcel
-Zend
-ZendX
-PHPExcel.php
Run Code Online (Sandbox Code Playgroud)
之后,自定义类工作正常
Zend_Loader_Autoloader::getInstance()->registerNamespace('ABCD_');
Run Code Online (Sandbox Code Playgroud)
在引导程序中.此外,这些课程都被命名为ABCD_blahdeblah.
但是,执行registerNamespace('PHPExcel_')无助于Zend找到合适的类.当我尝试
$sheet = new PHPExcel;
Run Code Online (Sandbox Code Playgroud)
在控制器中,我收到"未找到类"错误.我猜这是因为PHPExcel中的类没有使用命名空间前缀命名,或者因为主PHPExcel.php文件位于我刚刚声明的命名空间之外.但PHPExcel结构要求它位于其余类/ font/etc文件的父目录中.
任何指针都将非常感激.
提前致谢.
Dav*_*aub 10
为PHPExcel创建自动加载器并将其添加到Zend自动加载器堆栈.
在library/My/Loader/Autoloader/PHPExcel.php:
class My_Loader_Autoloader_PHPExcel implements Zend_Loader_Autoloader_Interface
{
public function autoload($class)
{
if ('PHPExcel' != $class){
return false;
}
require_once 'PHPExcel.php';
return $class;
}
}
Run Code Online (Sandbox Code Playgroud)
并在application/configs/application.ini:
autoloadernamespaces[] = "My_"
Run Code Online (Sandbox Code Playgroud)
然后,在application/Bootstrap.php:
protected function _initAutoloading()
{
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->pushAutoloader(new My_Loader_Autoloader_PHPExcel());
}
Run Code Online (Sandbox Code Playgroud)
然后你应该能够用一个简单的实例化PHPExcel - 比如在控制器中 -
$excel = new PHPExcel();
Run Code Online (Sandbox Code Playgroud)
唯一的粘性部分就是PHPExcel处理在其自己的文件夹中加载所有依赖项的方法.如果这是聪明地完成 - 无论是通过调用require_once basename(__FILE__) . '/someFile.php'还是使用自己的自动加载器,它都不会妨碍Zend自动加载器 - 那么一切都应该很酷.#著名遗言
| 归档时间: |
|
| 查看次数: |
4703 次 |
| 最近记录: |