Zend Framework 1.8.0 带来的变化

曾经,我很羡慕 Django 等框架那完善的自动化工具。说实话,在 MVC 框架中不停的建立Controller、Action 是一件又枯燥,又麻烦的事情。而且,维护起来也颇费功夫。所以在 ninnypro 中我引入了一个 cli 工具,用于创建 Controller、Action 以及更新 ACL 的资源表。 现在,这些都将成为历史了。 Zend Framework 引入了 Zend_Tool 和 Zend_Application 两个包,用于自动化和快速集成。并且成熟的命令行工具 zf 也可以使用了。例如这里!! zf 将程序员的关注点聚焦到程序功能和细节的实现,更加的统一和方便。跟 ninnypro 的思路类似,以放弃灵活性为代价,换取约束性和开发速度。 如果我有精力,或许会在此基础上重新建构 ninnypro 吧。

PHP框架的繁荣是正确的发展方向吗?

这个其实是源于 javaeye 上的这个讨论:http://www.javaeye.com/post/886707。最开始吸引我的是在 rails 板块上诸多专业玩 java 和 ruby 的人是如何评价 php 以及 php 框架的。在讨论中发现有一些值得学习和借鉴的地方。所以推荐大家完整阅读这个帖子。从技术性、知识面和娱乐性来讲,都是质量很高的。 我就简单说一下我对于 php 框架繁荣的看法:

Zend_Loader::isReadable 和 is_readable 的区别

以前分析过 Zend Framework 1.0 的 Zend_Loader;php 内建函数 is_readable 本质上就是调用 filestat.c 的 php_stat 函数,这个在前几天关于 file_exists 和 is_file 的那个 post 中有说过。 今天在群上跟番茄吹水,说起来这个东西。于是又混一篇小记随便吹吹。 以下所有内容,45%是吹水,45%是猜测,10%是从代码中看出来的。

编译了 CHM 的 Zend Framework 手册[2008-07-04 更新]

[2008-07-04] 中文版本 chm 发布 1 周年,今天截止,中文翻译进度是 71%。同时也编译了英文版本。 中文 Zend Framework 手册 CHM 版本 | 英文 Zend Framework 手册 CHM版本 同时在 SVN 的中文手册目录下增加了 tools 目录,其中包含了正确编译中文 CHM 的说明以及工具。直接访问 SVN 的朋友可以自行编译。

Darby 離開了 Zend

5月23日對于 Zend Framework 來說絕對不是什么好日子。 首先 Darby 找到了新工作,23 日就離開了 Zend。 其次,Zend Framework 的 SVN 似乎受到毀滅性的損壞。 本想給大家再編譯一個英文版的 Zend Framework 手冊,現在看來,只能等 SVN 恢復再說了。 最新消息,Matthew 移動了 trunk 到 standard/trunk。所以之前的 svn 無法正常使用。

Under the hood 的意思

在翻译 Zend Framework 的手册的时候遇到一个短语:Under the hood。Google 的翻译为:“在引擎盖下面”。这个意思很奇怪。hood 可以是盖子,帽子,有盖的,隐藏、蒙蔽等等意思。为什么偏偏是引擎盖呢? 上网搜了一下,居然不少专业技术翻译也推荐使用“引擎盖下面”,还有什么“魔法师的帐篷里面”(个人觉得如果是 In the hood 再这么翻译才合适)等等…… 我记得中学的时候,英语老师说过,许多老外很傻,很天真。喜欢看例如从帽子里抓兔子这类低劣的魔术。那么这种魔术的一切秘密就在帽子下面——Under the hood。 所以 Under the hood 其实根据语境翻译为“本质上说”,“真正原因”,“最终的谜底” 等等都比较贴切。至于“引擎盖下面”和“魔法师的帐篷里面”还是留在汽车维修指南或者魔法入门的教材里使用吧。

Zend Framework 1.5 正式版 3.17 發布

今天才知道這個消息,1.5 做了很多改動,包括路由部分的大小寫解析方式也同以前 1.0x 不同。新功能對于只用 Zend Framework 開發普通網站的人來說并不是十分要緊。Zend_Form 和 Zend_Layout 反而會增加頁面編輯的難度。 * New Zend_Form component with support for AJAX-enabled form elements * New action and view helpers for automating and facilitating AJAX requests and alternate response formats * LDAP, Infocard, and OpenID authentication adapters * Support for complex Lucene searches, including fuzzy, date-range, and wildcard queries …

Zend_Mail 发送邮件后提示 Fatal Error

这实际上是由于 PHP 不允许在析构函数中抛出异常造成的,关于这个 issue 我已经提交到 issues 上: http://framework.zend.com/issues/browse/ZF-2534 暂时没有想到好的解决方法。通常执行到析构函数时,邮件已经正确发出。所以最不济的方法就是用try…catch… 捕获异常,并忽略掉。 如下: public function __destruct() {      try     {          if ($this->_connection instanceof Zend_Mail_Protocol_Smtp)         {             $this->_connection->quit();             $this->_connection->disconnect();          }     catch(Zend_Exception $e)     {     } }