Skip navigation.

极湖

无不用其“极”

Posts tagged with "Zend"

Zend Framework 组件所需的 PHP 扩展模块

, ,

Zend Framework 的组件,不少要用到 PHP 的扩展模块。
详情见:
http://www.mikaelkael.fr/doczf/zh/requirements.extensions.html

我整理了一下其中比较常用的模块,列举如下:

apc
ctype
curl
dom
gd
hash
iconv
json
ldap
libxml
mbstring
memcache
mime_magic
pdo_mysql
pdo_pgsql
pdo_sqlite
posix
Reflection
session
SimpleXML
soap
SPL
Sqlite
xml
zlib

搭建环境,编译 PHP 的时候,最好把以上模块包含进去,以免用到的时候再次编译 PHP。

Zend Framework 重定向方法(render, forward, redirect)总结

,

一. render
不指定render
结果: {当前Module}/{当前Controller}/{当前Action}.phtml

$this->render('bar') ;
结果: {当前Module}/{当前Controller}/bar.phtml

二. forward
$this->_forward('bar') ;
结果: {当前Module}/{当前Controller}/bar

$this->_forward('bar', 'foo') ;
结果: {当前Module}/foo/bar

$this->_forward('bar', 'foo', 'hoge') ;
结果: hoge/foo/bar

$params = array(
'a' => '1',
'b' => '2'
) ;
$this->_forward('bar', 'foo', 'hoge', $params) ;

结果: /hoge/foo/bar/a/1/b/2

三. redirect
$this->_redirect('/hoge') ;
结果: /hoge

$this->_redirect('/hoge/foo') ;
结果: /hoge/foo

$this->_redirect('/hoge/foo/bar') ;
结果: /hoge/foo/bar

$this->_redirect('http://localhost/hoge/foo/bar') ;
结果: http://localhost/hoge/foo/bar

$this->_redirect('http://localhost/hoge/foo/bar?a=1&b=2') ;
结果: http://localhost/hoge/foo/bar?a=1&b=2

四. 特殊情况
不使用 layout
结果: $this->_helper->layout()->disableLayout() ;

不使用 view
结果: $this->_helper->viewRenderer->setNoRender() ;

CakePHP 和 Zend Framework 逐项比较

, , ,

提起 PHP的框架,目前最热门的莫过于 CakePHPZend Framework

如果您要在这两个框架间作出选择,推荐读这篇《Notes on Choosing a PHP Framework: A Comparison of CakePHP and the Zend Framework》,文章用一个表格比较了两个框架的各方面,尽管带有一些主观性,总体来说还算客观,因此是个不错的参考。

不选 Zend, 也不选 Symfony,而选 CakePHP 的10个理由

, , , ...

在一个日本人的博客上看到《Zendでも、Symfonyでもなく、CakePHPを選んだ10の理由》,题目翻译过来就是《不选 Zend, 也不选 Symfony,而选 CakePHP 的10个理由》。文中所列举的理由,比较有参考价值,因此整理翻译如下:

理由1 PHP4、5两头对应

这个对开发者来说是值得庆幸的。

因为有时候客户现有的服务器环境,无法选择PHP的版本。这时候,如果原有的环境是 PHP4,Zend 和 Symfony 就鞭长莫及了


理由2 不依赖于 PEAR

这个和理由1一样,可以确信自己所写的代码在什么地方都能运行。

还有就是,若有在框架之外还有依赖的东西,从开发环境到实际环境的移行,有时候会有意外的麻烦。


理由3 设置简单

Symfony 由于依存于 PEAR,敲几个命令就能把环境搭起。CakePHP 则只要解压缩就OK了,

在设置简便这一点上,CakePHP 无疑高出一筹。

Zend 与其说是开发框架,还不如说是函数库群,光是设定就非常麻烦。


理由4 模型(Model)很智能

Symfony 的 YAML 不能不写,

Zend_DB 的预先设置就很麻烦,SQL 也不能不写,这可不行。


理由5 不会用 mod_rewrite 也不要紧

无法使用 mod_rewrite 的环境下,用近似的 URL 访问,发现也能正确动作。这是一个非常让人称谢的功能。


理由6 控制器(Controller)的参数非常出色

CakePHP 下处理 get 参数,只需给控制器的 Action 方法准备好参数即可,它能自动传递,这是个出色的功能。

若结合 mod_rewrite,可通过

/user/index/userid001

这样的静态 URL 取得参数。


理由7 错误处理太亲切了

缺少 Controller,或是缺少 Model,像这样根本性的错误,错误画面上会给出所需的最低限代码。初学者得感谢有这样的功能。


理由8 数据净化(Sanitize)方便

每当进行数据净化(Sanitize)的时候,$this->这东西做不了。
h就行,相当轻松。
译者注:以上两句偶也不太明白)

理由9 日期输入很轻松

Helper(v1.1是HTML, v1.2是Form)中有专门处理日期输入的方法,稍微改动一下就够用,在这种地方不用太费力气,是很具魅力的。


理由10 很容易集成第三方的制品

只要把东西放在 vendors 下,然后在 bootstrap.php 中写一行 vendor(),就能在任何地方使用了。
大体上,若需在框架中实现比较麻烦的功能,选用现成代码那是理所当然。从这些方面考虑,CakePHP 实在是太棒了!


译者注:Zend、Symfony 和 CakePHP,这几个框架我也有过接触,实在是难以取舍。最近在修改一个采用 CakePHP 开发的项目,发现 CakePHP 确实有不少优点,这篇文章基本上说出了 CakePHP 的优点,所以和大家分享一下。
December 2009
S M T W T F S
November 2009January 2010
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31