变态有趣的Zend Framework用法

  通常,使用ZF的人都对Controller很感兴趣,尤其是Rewrite和Router功能很吸引人,不过因为一些特殊原因,比如大项目中涉及大量的rewirte条件,导致全部交给php来处理有些难以接受,这个时候就可能会放弃掉ZF的Index.php文件, 而采用传统的PHP文件结构,这时的ZF如何使用呢?   前一段时间完成的6.cn 的专辑改造 (http://6.cn/zj),完全基于了ZF来实现,但却没有使用ZF的index.php文件,在目录结构上,完全参照了ZF标准的Models、Views、Controllers模式开发,只不过调用的地方直接调用Controller里面的Action,这相当于把Controller当作了一个普通的类来使用,这个方法经过使用,发现虽然有些变态,其实还是挺有趣和挺方便的。有兴趣的朋友可以尝试一下,感觉似乎更灵活,有时index.php会带来很多思路上的束缚 🙂

Continue Reading →

解决了ZF的两个问题

  之前提到Zend Framework的三个问题,有两个问题今天晚上搞明白了。 ErrorController官方文档里面提到的_getRequest(‘error_handler’)方法不存在的问题,改成 $this->_getParam(‘error_handler’)即可解决。 Controller里面的init()方法会在基类的构造函数__construct()之前调用的问题,通过阅读 Zend_Controller_Action类里面的100-130行找到解决办法,就是在基类的__construct()里面,把 parent::__construct($request, $response, $invokeArgs); 移到初始化操作之后,比如__construct()的最后一行即可解决。   第三个关于 useDefaultControllerAlways 参数导致_forward()方法的controller参数失效的问题不是太紧急,回头再研究。   顺便提一下,ZF的Router功能实在太强大了,甚至支持正则匹配,完全可以写出任何你想要的灵活的URL来,赞!

Continue Reading →