php zend mvc 配置,php – Zend Framework MVC设计

我也在zfforums上问了这个问题,但我可能会在这里得到回复.

所以Zend框架是一个通用的,灵活的,松散耦合的,高质量的框架.但是,我发现一些MVC部分不一致且过于复杂.希望你们中的一些人可以证明一些zf设计决策并回答一些问题:

一般问题/评论

>为什么zend mvc遵循与其他zend组件相同的命名约定?例如,mvc使用小写,多个目录名称和类名称不以目录信息为前缀,因此无法轻松自动加载.

>我想添加模块根目录的选项.这样,我就不必通过添加控制器/模块目录来显式配置调度程序.我可以放入一个模块并立即访问它.

>为什么视图和动作助手之间有区别?目前,帮助程序并非设计为在整个代码中共享,并且存在加载和访问帮助程序的不一致方法.其他框架允许您在代码中的任何位置共享相同的帮助程序.我认为不需要专门化和违反DRY.

Zend查看问题

>为什么视图使用“$this”来访问资源?我没有看到额外打字的需要.其他一些框架提取()一个视图变量数组,允许从视图中加载全局函数或自动加载静态助手:myHelper :: someMethod();

>为什么视图帮助程序每个类只允许一个函数?这导致了很多课程和相关的维护.我更喜欢使用已经提到的任何数量的方法的静态类.

解决方法:

我在一个庞大的内部网站点使用Zend Framework,因为它是早期阶段,我认为是0.3或0.4,而且我遵循了大部分关于你的问题的决定.我会尝试解释一下:

>在大多数情况下,您不需要使用模块.您可以将所有控制器放在应用程序/默认目录中,将它们命名为IndexController或HelpController并完成,只需访问http://www.domain.com/或http://www.domain.com/help即可.

如果您的项目开始增长,您可以根据需要添加模块,在它们前面加上模块名称(目录名称)Admin_IndexController或Forum_PostController,通过http://www.domain.com/admin访问它们(您在管理员中)模块,索引控制器;不在默认模块/管理控制器中).

>例如,您可以在applicatoin / modules中设置模块目录,并配置FrontController以查看此目录中的模块.使用addModuleDictory无论何时创建新目录并将视图/控制器放在那里,调度程序都会自动发现它们. Here就是一个例子.

>正如我所看到的那样,它们的目的明显不同ViewHelpers用于生成标记并直接在视图中呈现其他操作,抽象菜单创建,侧边栏等.作为示例,OTOH ActionHelpers与调度进程交互,允许您重定向到另一个操作.

查看

>在开始时我也觉得有点尴尬,但我已经习惯了.我认为主要原因不是污染命名空间,但我可能错了.顺便说一句,我不太喜欢使用extract(),但这只是我个人的偏好.

>主要原因是每个文件不允许有多个控制器:自动加载.当您使用$this-> someViewHelper()时,底层引擎会在插件路径中查找名为* _SomeViewHelper_Helper的类.另一个原因是静态类很难进行单元测试.甚至有人建议将FrontController重写为实例类,而不是Singleton.

你对你在第二段中所说的过于复杂的部分以及开发人员和社区对此的了解是正确的.它必须以这种方式来满足所有要求和变化.

最后,我认为ZF是一个非常强大的框架,让我们可以自由地做我们想要的事情.

我希望我可以帮你解决问题.

标签:php,zend-framework,zend-framework-mvc

来源: https://codeday.me/bug/20190730/1585034.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值