2012-08-12 97 views
0

当试图列出Pimcore CMS前端中的对象时,我遇到了这个问题。类目录IS in include_path。类php脚本是在网站/ var/classes上的。但Zend抛出我的例外:Pimcore不能包含类,但路径/文件已存在

警告:include_once(Object/hotelAds/List.php):无法打开流:没有这样的文件或目录在/ var/www/html/pimcore/lib/Zend/Loader中。 php on line 145

请指教为什么会发生这种情况。谢谢。

回答

0

像往常一样,我的问题太复杂了。所以让我自己来回答。

Pimcore有一个缺陷,需要更正以防止混淆。 当你命名一个类,例如hotelAds,就像我做的那样,它被创建。但该类的目录将被命名为HotelAds(/ website/var/classes/Object/HotelAds /)(从大写字母开始)。所以当你试图包含像你这样命名的类,就像你在后端看到的一样(!!) - 这是完全错误的,并且找不到文件。

当我通过“new Object_HotelAds_List()”(注意大写字母H)纠正问题时 - 文件包含在内,但我相信这并不能解决问题。和后端一样,这个类被命名为“hotelAds”,因此如果您打开类php文件,那么您也有“hotelAds”。所以这是行不通的。

我想Pimcore可能会将文件命名为想要的文件,但是当解析类请求时,它必须在后端查找类名。

无论如何,使用pimcore类时,必须命名从后端大写字母开始的类,这是它工作的唯一方法。 Otherways你将失去大约48小时试图找出什么是错的。对于Pimcore开发人员,我建议在从小写字母命名课程时至少发出警告。

1

请阅读OOP并按照命名约定,类名始终应该从大写字母开始,这就是为什么oop php框架使用ucfirst函数(首字母大写)。因为Zend是一个非常严格的类型框架,因此它使您能够学习良好的编程实践。

+2

嗯...更多评论比答案? – kleopatra 2012-10-06 10:24:32

+0

类名应以大写字母开头 – Dinar 2014-10-28 07:19:59

相关问题