所以我已经设计了一个在Zend Framework 1.11上运行的应用程序当任何程序员看到重复的功能时我会想要构建一个具有所述功能的基类。
现在我的计划是建立一个库'我',所以我在应用程序的库目录中创建了一个文件夹。所以它看起来像这样
Project
Application
docs
library
My
public
test
所以我在My文件夹中创建了一个BaseController类,然后决定让我的应用程序中的IndexController扩展BaseController。
Basecontroller看起来像这样:
class My_BaseController extends Zend_Controller_Action
{
public function indexAction()
{
$this->view->test = 'Hallo Wereld!';
}
}
IndexController看起来像这样:
class WMSController extends My_BaseController
{
public function indexAction()
{
parent::indexAction();
}
}
正如许多资源所建议我尝试使用行
在application.ini中添加库的命名空间autoloadernamespaces.my = “My_”
但是当我尝试运行此应用程序时,我收到以下错误
致命错误:找不到类'My_BaseController' C:\瓦帕\ WWW \ ZendTest \应用\控制器\ IndexController.php
我在这里遗漏了什么吗?或者我只是一个布偶,应该尝试不同的方法?
提前致谢!
答案 0 :(得分:3)
您的原始方法在application.ini中适用于您,您在设置时遇到了一些问题。
你的application.ini应该有这一行: -
autoloadernamespaces[] = "My_"
此外,您必须小心您的类名,以您的基本控制器为例,它应该在library/My/Controller/Base.php
中,并且应该如下所示: -
class My_Controller_Base extends Zend_Controller_Action
{
public function indexAction()
{
$this->view->test = 'Hello World!';
}
}
然后您可以像这样使用它: -
class WMSController extends My_Controller_Base
{
public function indexAction()
{
parent::indexAction();
}
}
所以,你几乎是对的,但却缺少一些细节。值得了解自动加载如何在Zend Framework中工作并学习使用class naming conventions
答案 1 :(得分:2)
我不知道.ini
配置,但我添加了这样的客户库(index.php):
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance()->registerNamespace('My_');