Zend_Controller讲解(一)

刚开始使用ZF的时候,只是从文档上面了解了一下实现机制,并没有怎么看代码。现在ZF已经是Beta版了,MVC的实现跟原来还是有点差别的。而且新的东西也在不断的加入进来。本文是以ZendFramework 0.9.2来进行说明。

在Controller目录下主要有:Front.php和Action.php两个文件。Zend_Controller_Front用于引导实例,设置相关参数。 Zend_Controller_Action提供控制器的基本方法,其它的控制器都应该是Zend_Controller_Action的子类。

然后,Plugin、Request和Response文件夹,就不用多说了。

Router文件夹是URL映射的实现。不管你是否会用到Zend_Controller_Router_Rewrite,都会创建这个对象。其中每一条规则就是Zend_Controller_Router_Route_Interface的实现。如果没有添加URL映射规则,就会以默认的方式来Dispatcher控制器。

最后,Dispatcher是用于通过URL的映射出的参数,来创建不同的控制器。

这里只是对各个文件夹的内容作个说明,我希望我能写点代码来描述这些东西,希望“五一”来了我能完成。 

本月关注2007-04

其实我对这种西方的节日并不怎么感冒,可能是因为我不习惯耍别人。虽然今天是星期天,但还是在公司呆了一天,估计明天会轻松些。

上个月,还是让人比较开心的。突然发现,我有点喜欢读点经济方面的文章,比如:长尾。好吧,看看这个月有很些什么东西。

Firefox3 Alpha4

PDT Project 0.7

ZendFramework 1.0RC1

Plone3 Beta2?

升级内存

搬家

公司搬家了。。。

今天,公司搬家了,搞了一整天。不知道是好事还是坏事,现在的地方还远。看来我要搬家了。再过几天就到五一长假了。希望这次回去把某件事办了。

本来以为会在4月份看到ZendFramework的0.9.3版的。但好象计划是5月4号才会发布。

希望明天交好运吧。 

Firefox3 Alpha 4

今天firefox3的最新开发版Gran Paradiso Alpha 4释出了。依然是没有看到Places的影子,这次主要更新了:

  • 引入了FUEL (Firefox User Extension Library)这个东西。也就是为扩展开发者提供一些公共的库,以提高扩展的质量。有机会我也开发一个扩展玩玩Laughing
  • 重新设计的“查看页面信息”,从里面的功能来看,对每个网站的控制力更强了。
  • 至于“离线应用”,我还没搞清楚怎么玩的。。。
  • 还有一些mac的东西和一些bug修复。

按照计划,5月31号发布alpha5版,不知道下面有多少会在alpha5中出现Innocent

  • Web-based content handlers
  • Search engine keyword support
  • New Password Manager
  • First pieces of new Extension Manager (EM) work
  • Places
    • Parity with Fx2 Bookmarks and History
    • Safeguard against data-loss
    • Bookmarks never lost between sessions
    • Sync infrastructure
    • API for extensibility
    • Backup and restore
  • Identity framework (i.e. CardSpace support)
  • nsTextFrame migration to Thebes
  • Growl Integration for OS X

用Zend_Loader加载文件

在PHP中经常会调用include_once和require_once来加载各种文件,并确保只加载一次。但在5.2以前的版本都会找开目标文件,以降低IO影响效率。据说在5.2中已经改进,不过我没试过。

所以,尽量不要使用他们。如果需要确保文件只加载一次,需要另外进行判断。在Zend_Loader中,ZF已经帮我们把这些工作都作好了。而且,这些方法都是静态方法。所以,在使用ZendFramework开发的时候尽量使用Zend_Loader吧。如果没有使用框架的话,可以自己封装一个这样的东西。

Weblogroll

首先,blogroll=weblogroll,在前几天我加上了这个东西。网络上对blogroll的定义是:

大多数 blogger(博客)在其个人网志上都提供 blogroll。这就允许读者连接到其他趣味和写作风格相投的人的网志上。Blogroll 方便了网络上的沟通。通过使用Outline Processor Markup Language (OPML),人们可以用 XML 格式文件交换 blogroll。

现在这个功能,并没有达我的预期的目标。被添加的站点,会自动分析head中的内容,将ico和rss提供出来,但现在确没有出现,主要是使用正则分析的问题,本来我对正帽就不是非常了解,所以这是需要解决的问题。而且,分析后的数据是直接取URL还是本地存放一份也是考虑中。

如果根据上面的定义,那么抓取目标站点的OPML也是个不错的选择。 

最近缓慢啊。。。

今天,流氓软件的残影又再次出现,我用安全卫士365查不出来。其实我对这东西没什么好感,这次事件后让我感觉还是早点跑到ubuntu哪边去算啦。最后,使用系统还原回到几天前的状态,好象OK了,现在还在测试。

这几天玩游戏玩的很疯,搞得开发进度有点慢。而且最近ZF不知道怎么回事,更新好象很少了,本来预定的0.9.3还没有出来。

前几天,我添加了个weblogroll,添加表单的时候让我感到很不方便,虽然我做了一些helper。再看了Django的快速开发原型后,搞到非常之快。通过定义属性,来自动生成表单,最久在想怎么使用到ZF中去。

目前还有一个问题困扰我,就是当异常抛出来的时候,我怎样指向404错误页面。昨天看了下MVC相关的代码,感觉文档中对Dispatcher的讲解有些问题。这个还要具体看源码才知道。

使用301重定向URL

由于我对原来weblog的URL感觉有点罗嗦,而且层次比较深。这样是因为ZF中的URL的映射还是做得不怎么好。前几天在看Django的时候,他的URL映射非常不错。由于这些URL已经被搜索引擎索引,如果不要会有点不划算。这种情况下,可以使用http协议中的301Moved Permanently,将URL永久转移。这样当访问原来的URL的是时候,会重定向到新的URL。由于搜索引擎们的各自的技术不一样,能不能正确这些http头信息就不知道了,反正google是知道的。就算是搜索原来的URL,显示出来确是新的URL。

风寒入侵…

昨天,有点冷,衣服装少了,然后就是头痛。根据人体使用手册上的说明,这些症状是排除寒气时所引发的症状。可能是我身体不好吧,要不然怎么这么容易就风寒入侵了。不然也不能叫骨头鱼啊。

晚上找浩方优化版的时候,一时不小心踩到流氓软件,结果今天早上爆发。感觉挺无助的,有气没地方出。晚上,头痛的利害,醒了几次。。。早上起来。身体开始正常运作了。 

我的灵魂是好战的

记得小时候,每次上楼梯的时候我总是要走在妈妈的前面,不然我就哭闹进来。在我刚开始上网的那年头,在论坛里总有些人跟我过不去或者看到超无聊的帖子,我总是要上去回个几帖。久而久之,我对这种行为非常反感,后来基本去论坛不回帖。其实现在,我对现在流行的论坛模式没什么好感,而且有点讨厌。v2ex.com应该是个特例,在v2ex之前我就非常关注她的缔造者Livid

今天在某论坛里看到已经出现几天的超无聊的帖子,一下没忍住,上去发了一帖。以前我一直在考虑一个问题,是否有其它的方法来回复这种论坛式的发帖方式。

韩寒这人比较有意思。