Skip navigation.

极湖

无不用其“极”

Posts tagged with "Framework"

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。

选择开发框架的要点

, ,

看了一篇文章《Key Points for Choosing the Best framework》,说的是选择开发框架的时候应该考虑的要点,尽管这篇文章提到的框架都是 Java 的,然而所列举的几个要点也完全适用于其他的语言,因此具有一定的参考价值。

我把几个要点粗略翻译了一下,刨去了其中提到的几个框架名字。如下:

流行度(Popularity)
有助于快速上手。

市场(Market)
更容易找到工作。

方便性(Convenience)
最好不要有太长的学习曲线。

实现时间(Time to implement )
尽量快速完成任务。

适用范围(Scope)
最好能与其他框架协同工作。

文档(Documentation)
如果没有这东西,你很容易被卡住。

论坛(Forums)
社区越大,你的工作越容易完成。

Bug 跟踪(Bug tracking)
如果你有意深入,框架需提供问题报告功能。

参考书(Reference Books)
在线查询会花费你大量时间,因此书本亦不可缺少。

轻量(Light weight)
如果你用到的功能不多,过于复杂的框架反而不好。

健壮(Robust)
起码在您想实现的功能当中,不能存在已知的缺陷。

特点(Features)
某个强项或许会让你觉得时间过得轻松愉快。

挖出一个“重量级” PHP Framework —— Yii

, ,

这些天一直在挖掘轻量级 PHP Framework,找来找去,突然发现一个叫 Yii 的 Framework,这个框架让我眼前一亮。

看了一些介绍,目前我所了解到的信息如下:

1. Yii 的程序是身在美国的中国人写的。(主要开发者叫薛强)

2. Yii 的开发者原先是 Prado 项目的主要成员。

3. Yii 的主要卖点是速度,一个字——快。

4. Yii 刚刚出道,目前版本是 1.0.1, 已经有不少人关注这个框架,包括一些有 CakePHP 或其他框架的开发经验的老手。

5. Yii 很注重 AJAX 的支持,尤其是基于 jQuery 的应用。

挖掘轻量级 PHP Framework

, ,

提起 PHP Framework,总是会想到 CakePHPZend Framework, Symfony, CodeIgnitor 等大名鼎鼎的框架,这些框架基本都提供一整套的东西,个头也比较大,运行效率不太令人满意,还有就是比较复杂,不容易掌握。

这些天在网上找轻量级的 PHP Framework,只考虑 MVC 模式的框架。 网上公开的 PHP 开发框架多如牛毛,能看入眼的却不多,选几个自己认为不错的如下:

1. LightVC

看了一下代码结构,觉得比较清爽。这个框架把 MVC 中的 M 暂时丢开,用这个框架的人可以自己选择 Model 功能的实现方法。该框架的作者同时还做了一个叫 CoughPHP 的项目,单独实现了 Model 的功能,因此两个合起来使用应该配合很好。当然你也可以使用 Propel 或是 Doctrine 或是 Outlet

2. TinyMVC

这个框架看起来是 Smarty 的作者写的,基本上只是搭了一个框架,具体的功能看起还得自己添加不少代码,数据库部分的功能用 PDO 来实现(这个选择个人觉得挺不错),奇怪的是,框架的 View 部分默认没有使用 Smarty,要用 Smarty 还得自己改代码去实现。

3. Adroit

其实这是以前就发现的,现在又把它找了出来。看看代码稍微有些杂乱,不是很清爽,操作数据库的代码尤其不让人满意,连最基本的字段值 quote(引号变换) 都没做,作者提供几个生成诸如生成 Controller、Model 的 PHP Script,个人感觉可有可无。

4. Pluf

用 PHP5 来实现 Python 下著名框架 Django 的功能,内容比较齐全,既熟悉Django的人又熟悉PHP的人或许会喜欢它。

5. Simplemvc

一篇介绍怎么用 PHP 写 MVC 框架的文章,我下载了文章后面附加的代码,看了一下觉得还可以,至少不难懂。如果想自己写框架,相信这是个不错的模板。

CakePHP 和 Zend Framework 逐项比较

, , ,

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

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

cakePHP 动态选择数据库连接的方法

, ,

很简单,只要把 /app/config/database.php 文件的内容替换成以下形式:
<?php
class DATABASE_CONFIG {
    #localhost
    var $local = array('driver' => 'mysql',
        'connect' => 'mysql_connect',
        'host' => 'localhost',
        'login' => 'root',
        'password' => ",
        'database' => 'local',
        'prefix' => '');

    #dev server
    var $dev = array('driver' => 'mysql',
        'connect' => 'mysql_connect',
        'host' => 'mysql.dev.com',
        'login' => 'dev',
        'password' => 'password',
        'database' => 'dev',
        'prefix' => '');

    #live server
    var $live = array('driver' => 'mysql',
        'connect' => 'mysql_connect',
        'host' => 'mysql.live.com',
        'login' => 'live',
        'password' => 'password',
        'database' => 'live',
        'prefix' => ");

    #switch between configs
    var $default = array();
    var $test = array();
    function __construct() {

        #wildcard the subdomains
        $host_r = explode('.', $_SERVER['SERVER_NAME']);
        if(count($host_r)>2) while(count($host_r)>2)array_shift($host_r);
        $mainhost = implode('.', $host_r);

        #switch between servers
        switch(strtolower($mainhost)) {
            case 'localhost':
                $this->default = $this->local;
                break;
            case 'dev.com':
                $this->default = $this->dev;
                break;
            case 'live.com':
                $this->default = $this->live;
                break;
            default:
                $this->default = $this->local;
        }
    }

    #php 4 compatibility
    function DATABASE_CONFIG() {
        $this->__construct();
    }
}
?>

★注:以上方法来自 这儿

不选 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 的优点,所以和大家分享一下。

PHP开发框架相关信息

,

花了半天时间寻找PHP的开发框架,在这儿记录一下搜索到的有用信息。

1. Taking a look at ten different PHP frameworks

2. 十款PHP开发框架横向比较 (以上链接的中文翻译)

3. 廖宇雷:我对 CakePHP 和 Symfony 的看法

4. 俊麟:值得研究的PHP主流FrameWork框架

5. Top 10 PHP MVC frameworks

6. Rails-inspired PHP frameworks

7. CakePHP/指南/建立一个简单的Blog

8. Which PHP framework holds a promise for the future?

经过比较,我对pradosymfony比较感兴趣一些,cakePHP看起来也不错。

最后在Google Code上找到一个简单小巧的框架simple-php-framework,需要用svn下载源代码。感觉这个小东西更适合我,接下来可能会用这个框架开发一些自己的东西。

用 PHP 写的 MVC 开发框架一览

, , ,

看到题为 MVC Frameworks Written in PHP 的这个网页:
http://www.phpwact.org/php/mvc_frameworks

其中列举了一批 PHP 的 Framework,每个Framework的“前身”,也做了交代,有的模仿ROR,有的模仿Struts,或是模仿其他有名的Framework。应该说,有一定的参考价值。

国内有人翻译整理了《php下一代的五个framework介绍》,文中提到的五个Framework,Zend FrameworkAvagi 在以上列表中没找到,或许这篇文章可以作为上述列表的一个补充。

顺便提一下这个网站:Web Application Component Toolkit,一看就是用熟悉的 Docuwiki 做的,最近采用这个程序做自己的Wiki,感觉很好,很喜欢这套开源的Wiki系统。
November 2009
S M T W T F S
October 2009December 2009
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