我最近开始建造我十岁定制MVC框架的第2版。 这对我来说就一些项目伟大的工作,但我绝对看到改进的余地。 它缺少像ACL,表单验证,缓存和一些主要的功能。 虽然我很想去建立这些部分我自己,我知道,实际上这不是一个明智的决定。 所以,我开始寻找Zend框架1.9。 我真的很喜欢它的组件库是如何松散耦合。 然而,看着不同的教程,似乎很繁琐。 我已经看到了,我可以重复使用更少的代码,用我自己的框架一些示例应用程序。 因此,我想“重新定义”很大一部分,使之更加友好的RAD。 所以之前我投入了大量的时间挖成的框架,我希望有人能照到这个问题对我来说一些轻。 我在心脏编码器,并没有任何问题花费在小时的时间来研究和定制的东西,如果它有一个坚实的基础(我希望ZF有)。
我要指出,我非常高兴地看到,教义可以用ZF集成。
如果ZF是不容易扩展,还有什么其他框架是(也有ACL,表单验证,缓存)? 我一直在寻找的Symfony,但在公约的东西全配置困扰了我很多。
感谢您事先的任何输入。
编辑
要回答tharkun的问题,我的意思是“易于扩展”是,我可以推出自己的类(可能会或可能不会延长ZF类)和框架将它们打包,这样我可以轻松地构建的代码基础,为我自己项目。
在流行的PHP框架ZF肯定是其中的一个最容易地扩展,特别是因为在松散耦合的,。
感谢您的澄清。
你描述的正是ZF擅长,但我会说这也正是OOP擅长,所以我会认为一个面向对象的框架,不支持此对垃圾箱的情况下。
无论如何。 随着ZF它在你保持你自己的图书馆在并行结构的ZF文件夹结构的方式正常完成。 您可以使用ZF自动加载,并通过将其添加到命名空间的注册与自动加载磁带机库文件夹。 例:
//this will be the only require needed for your whole application
require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('Mylibrary_');
在在MyLibrary你应该然后按照ZF命名约定。 假设你想延长Zend_Db_Table_Abstract类。 这个类是逻辑上位于下的Zend / DB /表/ Abstract.php。 你的库现在应该复制这个结构:在MyLibrary / DB /表/ Abstract.php。 你会说出你的那个文件类:
class Myproject_Db_Table_Abstract extends Zend_Db_Table_Abstract
{
/*
now you're ready to extend and override as much as you like.
and as a bonus you'll not even hav to include your library files
since your library is registered with the loader
*/
}
你有什么考虑别人问这个问题是什么时候?
我已经通过扩展ZF开发我自己的框架。 我可以告诉你,它可以轻松完成。 你可以使用你想要什么,并取代你不想要什么很容易。 全ZF如下OOP的核心。 他们采用最佳做法随处可见。 我已经通过观察其代码学到了很多东西。
我个人认为ZF是最好的PHP框架我见过。
个人的Zend FW是我的最爱。 它踢屁股。 期。 ,虽然说,你有心脏是一个编码器,能够欣赏它。 它可以得到相当抽象的。
要回答你的问题; Zend公司FW非常扩展,一切 - 真是应有尽有 - 可以延长。 类命名规则是; 类Zend_This_IsAn_Example在/library/Zend/This/IsAn/Example.php发现了,你会延伸Whatever_This_IsAn_Example你会放在/library/Whatever/This/IsAn/Example.php它还具有自动加载,你可以启用,所以你将不必再require_once类文件。
MVC结构;
/应用/应用/控制器/申请的/ etc /应用/模型/应用/视图/库/库/的Zend /库/自定义/公
退房http://framework.zend.com/manual/en/introduction.html和http://framework.zend.com/docs/quickstart
它并不完美 - 已经有使用静态成员和具体类的依赖于ZF的倾向 - 但有些已在更高版本的框架已经冰释前嫌。 我会说,与其他类似的框架相比,ZF做得很好。 事实上,松散耦合可能是框架的最大卖点。
它几乎是延长Zend框架没有问题。
这是设置一个常见的做法某种“myExtenions”至极的是共同使用Zend框架库现有的。 作为例子,你可以看看上:
ZYM Zend框架扩展
主要的一点是,你可以很容易地编写接口。 你是不是满意Zend_Acl_Resource实施? 使自己的资源类实现接口Zend_Acl_Resource_Interface :)