扩展/修改Zend Framework有多容易?

时间:2009-10-01 05:34:42

标签: php zend-framework

我最近开始构建我一年的自定义MVC框架的第2版。在许多项目中,它对我很有用,但我确实看到了改进的空间。它缺少一些主要功能,如ACL,表单验证和缓存。尽管我自己喜欢自己构建这些部件,但实际上我知道这不是一个明智的决定。所以,我开始研究Zend Framework 1.9。我真的很喜欢它的组件库松散耦合。但是,通过查看不同的教程,它看起来非常冗长。我已经看到了一些示例应用程序,我可以用我自己的框架使用更少的代码复制。因此,我想“重新定义”它的大部分内容,以使其更加友好。因此,在我花费大量时间深入研究框架之前,我希望有人可以为我阐明这个主题。我是一个内心的编码员,如果它有一个坚实的基础(我希望ZF有),可以花几个小时调整和定制一些东西。

我应该注意到,我很高兴看到Doctrine可以与ZF集成。

如果ZF不易扩展,还有其他框架(还有ACL,表单验证,缓存)?我一直在看Symfony,但整个Configuration over Convention事情让我很烦恼。

提前感谢任何输入。

修改
要回答tharkun的问题,我的意思是'易于扩展'是我可以滚动自己的类(可能会或可能不会扩展ZF类)并将它们打包到框架中,以便我可以轻松地为自己构建代码的基础项目。

6 个答案:

答案 0 :(得分:8)

在流行的PHP框架中,ZF肯定是最容易扩展的框架,特别是因为松耦合。

感谢您的澄清。

你所描述的正是ZF所擅长的,但我会说这也是OOP擅长的,所以我认为OO框架不支持垃圾箱的情况。

反正。使用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 / Table / Abstract.php下。您的库现在应该复制该结构:Mylibrary / Db / Table / 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
    */
}

在提出这个问题时,您还有其他想法吗?

答案 1 :(得分:2)

我通过扩展ZF开发了自己的框架。而且我可以告诉你它可以轻松完成。你可以使用你想要的东西,并且很容易地替换你不想要的东西。 完全ZF遵循OOP到核心。他们到处使用最佳做法。我通过观察它的代码学到了很多东西。

我个人认为ZF是我见过的最好的PHP框架。

答案 2 :(得分:1)

个人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结构;

/应用 /应用/控制器 /应用/等 /应用/型号 /应用/视图 /图书馆 /图书馆/ Zend公司 /库/自定义 /公共

结帐http://framework.zend.com/manual/en/introduction.htmlhttp://framework.zend.com/docs/quickstart

答案 3 :(得分:1)

它并不完美 - 在ZF中存在使用静态成员和具体类依赖性的趋势 - 但是其中一些已经在框架的后续版本中得到了解决。我想说,与其他类似的框架相比,ZF表现不错。事实上,松耦合可能是该框架的最大卖点。

答案 4 :(得分:0)

扩展Zend Framework几乎没有问题。

通常的做法是设置与Zend Framework Library共存的某种“myExtenions”。例如,您可以查看:

Zym Zend Framework Extension

答案 5 :(得分:0)

重点是您可以轻松编写接口代码。你对Zend_Acl_Resource的实现不满意吗?创建自己的资源类,实现Zend_Acl_Resource_Interface:)