存档

‘Zend-Framework’ 分类的存档

Zend Framework MVC流程图说明

2009年2月16日 admin 没有评论

这个图是ZF文档中的,7.2节的图。由于中文文档还没有翻译,所以先搞个图看看,这个图画的非常好,非常明朗。 

我已经用不同的颜色标注了不同的部分。主要流程是绿色块,黄色部分是钩子,这种蓝色代表Request和Response对象,紫红色部分判断是否dispath完毕。基本方向就是:Request -> Router -> Dispatch -> Send Response

更新

 

Zend_Controller架构详解

更详细的说明请参看http://gonefish.cn/?page_id=473


 

 

分类: PHP, Zend-Framework 标签:

Cake vs Solar vs Symfony vs Zend Framework

2009年2月13日 admin 没有评论

今天在找ZendFramework资料的时候找到了一个网站,用apache branchmark对四个框架进行了测试。分别是:

结果是Solar每秒中处理请求最多,Zend Framework次之,后面则跟着Cake,Symfony。

ramework avg rel
solar-0.25.0 170.26 3.24
zend-0.6.0 131.91 2.51
cake-1.1.12 114.39 2.18
symfony-1.0.0beta2 67.18 1.28

由于该ZF版本是0.6版,而马上0.9版也就要发布,所以上面结果可参考一下。而且,作者在这些测试代码放在google code中,有兴趣可以自己下下来测试一下。solar这个框架我也是今天才看到,有点像ZF,不过具体代码就没看了,也是PHP5专用的。

New Year’s Benchmarks

原来这篇Weblog的作者就是Solar的开发者。

分类: PHP, Zend-Framework 标签:

关于Zend Framework中的URL映射

2009年2月13日 admin 没有评论

在MVC的结构中,都会有一些URL的映射机制,他可以让你写出漂亮的URL,友好的URL是SEO中重要的一部分。在使用ZF的时候,如果对URL没有太多要求,可以使用默认约定的URL规则,这样做是最快的。如果你想使用漂亮的URL,不管你用什么Route,都不要一次性添加许多Route。因为在ZF中,所有的自定Route都会添加到一个数组中,而且,每次都会遍历数组来匹配你请求请求的URL对应哪一个Route。如果你的规则越多,那么效率就会越低,那是当然的。所以,最好添加Route前,判断一下URL,再来添加某一个Route。

以上我看ZF的源代码后的结果,不过还没有做的测试,可能出现不服的情况。 

分类: PHP, Zend-Framework 标签:

Zend_Db里各种接口关系

2009年2月13日 admin 没有评论

这段时间主要在改数据库方面的东西,于是有时间对Zend_Db进行了解。

Zend_Db是最低层的封装,通过不同的适配器,来实现不同数据库和不同数据库接口之间的差别。现在最主要的使用pdo_mysql这个适配器,Mysqli也许也是个不错的选择。这个接口的数据库操作是需要自己写sql语句的,但还是提供了一些简单的功能封装。至于Oracle和Db2我就没试过了。

Zend_Db_Table是一个“表模式”,这种模式你能用面向对像的方式来操作数据库。在创建实现的时间,会要求你添加了个Zend_Db实例,因为所有的数据操作还是通过Zend_Db来完成的。

Zend_Db_Table_Row你可以把它看到是一条记录,当然是通过Zend_Db_Table里的某些方法创建的,让你操作对象一样修改某一种记录。但这里还是包装,Zend_Db_Table_Row的方法找Zend_Db_Table,结果Zend_Db_Table又去找Zend_Db。

Zend_Db_Table_Rowset是一个Zend_Db_Table_Row的迭代器。

分类: PHP, Zend-Framework 标签:

Zend Framework 1.1 Roadmap

2009年2月13日 admin 没有评论

我已经好久一段时间没有写PHP的程序,这个小网站的程序也停了下来。一些工作转到了Django。最近去看1.1的Roadmap的时候,发现1.1将是一个非常重大的更新,LDAP在大型网站中是非常有用的服务,做为“企业级”的框架有些东西还是必要的。Zend_Cache方面看来也得到了强化。

ZF-2117 Code Generation Tool

这个看来是非常必要的,DRY,是个好东西

ZF-2116 View Layouts

已前在Zend_View与控制器结合不是非常紧密,现在通过Layouts技术来结合。总之1.1是个非常重要的版本。另外PDT也已经发布1.0的版本了,最近被eclipse的强大所感动了。

分类: PHP, Zend-Framework 标签:

Zend Framework性能优化指南

2009年2月13日 admin 没有评论

最新的官方手册中的内容

http://framework.zend.com/manual/en/performance.html

 

分类: PHP, Zend-Framework 标签:

简单的方法优化Zend Framework的性能

2009年2月13日 admin 没有评论

在Zend Framework1.7中的Zend_Loader包中,加入了一个优化读取helper类的机制。只需要简单设置一下Zend_Loader_PluginLoader就可以达到效果。

Zend_Loader_PluginLoader::setIncludeFileCache($classFileIncCache);

$classFileIncCache指向一个过写的空白PHP文件,当有helper之类的文件需要加载时,会自动写入到$classFileIncCache文件中,以include_once的形式加载,在之后就会默认自动加载程序中用到的文件了。在许多的组件的读取helper过程中,已经判断了是否设置了$classFileIncCache,如果设置了就会写进这个文件,如果没有设置就是直接读取了。

关于自定的View_Helper可以设置Zend_Loader_PluginLoader的插件读取目录,具体可参考官方文档

分类: PHP, Zend-Framework 标签:

使用ZF创建子域名站点

2009年2月12日 admin 没有评论

在开发Web站点的时候,经常会碰到提供子域名的服务之类的问题,而在Zend Framework的开发过程中,所有的链接都会被重写到index.php上。这样在实现子域名的开发上就有些麻烦,但在Zend Framework 1.7中,在一个新的路由器专门用来处理子域名的映射,Zend_Controller_Router_Route_Hostname。她的工作原理是这样的:

首页通过Zend_Controller_Router_Route_Hostname规则找到相对应的域名,根据域名你可以产生相关变量,如:控制器名称;用户ID等。这找到相对应的规则后,再对路径进行了路由规则进行匹配。就是说通过两次路由规则找到相对应的参数

假如有这样一个地址,gonefish.users.example.com/profile。创建如下规则:

$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
    ‘:username.users.example.com’,
        array(
            ‘controller’ => ’profile’,
            ‘action’ => ’userinfo’
        )
    );

$plainPathRoute = new Zend_Controller_Router_Route_Static(”);
$plainPathRoute2 = new Zend_Controller_Router_Route(
    ‘profile’,
    array(
        ‘action’ => ’profile’
    ),
);

$router->addRoute(‘user’, $hostnameRoute->chain($plainPathRoute);
$router->addRoute(‘user’, $hostnameRoute->chain($plainPathRoute2);

第一种情况:访问gonefish.users.example.com。首先,路由系统先匹配gonefish.users.example.com域名,找到了控制名和动作名;然后再对后面的路径进行一次规则匹配,因为没有其它路径了,所以应用的是$plainPathRoute1路由规则。

第二种情况:访问gonefish.users.example.com/profile。首先,路由系统先匹配gonefish.users.example.com域名,找到了控制名和动作名;然后再对路径profile进行一次规则匹配,这样更新了动作名,即$plainPathRoute2的路由规则。

通过对访问地址进行两次路由规则的匹配来映射最终访问的方法。

分类: Zend-Framework 标签: