2013-01-06 32 views
2

我工作Zend的PHP项目,我试图将代码中分离出来成为一个自定义库,例如“自定义”。目前这主要由一些自定义表格组成。自动加载自定义库中的Zend 1.12

我的文件夹结构如下。

/project root 
/Library 
    /Custom 
    /Forms 
     /Account 
     /Login.php 
     Base.php 
    /Zend 
    ... 

的login.php中和Base.php具有以下命名约定:

class Custom_Form_Account_Login extends Custom_Form_Base 
{ 

} 

class Custom_Form_Base extends Zend_Form 
{ 

} 

最后,我把下面一行在我的application.ini文件

autoloaderNamespaces[] = "Custom_" 

然后创建表单,我有这个控制器...

$form = new Custom_Form_Account_Login(); 

但是当我加载页面时,出现错误,告诉我无法找到Custom_Form_Account_Login。显示包含路径,我可以看到“/ project root/Library”在那里,所以我有点困惑,为什么找不到类。

我已经尝试了一些在不同的application.ini行,我已经在更改后重新启动服务器但错误依然存在。

我试过

,其他线路包括:

autoloadernamespaces[] = "Custom_" //All lowercase 
autoloaderNamespaces[] = "Custom" //Without the underscore 
autoloaderNamespaces.custom = "Custom_" 
autoloaderNamespaces.0 = "Custom_" 

由于我使用Zend 1.12提及。我最好喜欢在.ini文件中配置它。

回答

4

你的文件夹名称为Forms(复数),但类名称使用Form(单数)。在你描述的上下文中,这些都需要相同。 Form(单数)可能更好,因为它反映了ZF结构。

+0

谢谢!我认为这样可以,因为我最初在/ root文件夹/应用程序下拥有完全相同的结构,然后决定将它移出到单独的库中,并认为它会好的。我想知道为什么它在应用程序文件夹下没问题?干杯! – cast01

+1

它在'application'文件夹中工作的原因是有一个资源自动加载器被调用,它建立了一堆前缀/路径映射。查看类“Zend_Application_Module_Autoloader”。谢谢,欢呼! –

+0

啊现在有道理,谢谢你进一步解释:) – cast01