CnSwift - 雨燕

agile development - 敏捷开发

colaphp文档

colaphp - Tutorial_ZH_CN.wiki

安装

下载ColaPHP,解压缩,将ColaPHP目录复制到Apache htdocs目录中。

访问:http://127.0.0.1/ColaPHP/demo/index.php

显示”Index@1245405399”(数字可能稍有不同,为当前时间戳)则表示安装成功,如果有问题的话,可能是路径引用的问题,直接修改即可。

说明

ColaPHP还在不断开发中,存在一定的不稳定性,最好的情况是阅读源代码,代码面前没有任何的秘密,ColaPHP会尽量让源代码可读,这也是我们的宗旨。

配置文件

从0.3alpha开始,ColaPHP支持统一的配置文件(比如demo中的config.inc.php),可以通过$cola->boot(配置文件或者配置信息)来加载配置,具体的内容可以参见config.inc.php

URL定义

ColaPHP被设计成支持PHP原生的URL REWRITE,从0.4alpha开始,除了支持基于正则的URL REWRITE,ColaPHP还默认支持动态URL匹配:比如请求:

http://127.0.0.1/ColaPHP/demo/index.php/foo/bar/id/9527

将会分发到FooController中的barAction,并且可以在Controller中通过$this->getVar('id')或者$this->request->param('id')来获得id的值。

另外,ColaPHP的URL规则定义如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$urls = array( 
'/^$/' => array(
'file' => 'controllers/IndexController.php',
'controller' => 'IndexController',
'action' => 'indexAction'
),
'/^test$/' => array(
'controller' => 'controllers/IndexController.php',
'class' => 'IndexController',
'action' => 'testAction'
),
'/^view\/?(\d+)?$/' => array(
'file' => 'controllers/IndexController.php',
'controller' => 'IndexController',
'action' => 'viewAction',
'maps' => array(
1 => 'id'
),
'defaults' => array(
'id' => 9527
)
)
);

数组的键值为正则表达式,值为一数组,系统会找到匹配的规则,然后引入定义好的文件,调用定义好的类以及方法,如果有参数的话,还还可以匹配出对应的参数,参数支持默认值。

比如:http://127.0.0.1/ColaPHP/demo/index.php/view/3306,系统会提取'view/3306'去匹配定义好的规则,发现与'/^view\/?(\d+)?$/'规则匹配上了,然后系统会引入controllers/IndexController.php文件,调用IndexController类的viewAction方法,并将匹配出来的3306传进去,如果是访问:http://127.0.0.1/ColaPHP/demo/index.php/view,也能与'/^view\/?(\d+)?$/'匹配上,没有匹配到参数,将默认参数9527传过去。

更多的例子参考DEMO中的config.inc.php,urls配置信息通过$cola->config('_urls', $urls);配置到Cola实例中去。

Demo中还有一个例子演示如果跳过Cola_Router,可以做到智能匹配,可以阅读一下http://code.google.com/p/colaphp/source/browse/trunk/demo/norouter.php 你就会更加了解ColaPHP的调度过程了.

Database使用

ColaPHP的Database设计采用工厂模式,暂时只支持Mysql服务器(其他数据库逐步完善),支持Mysql、Mysqli、Pdo_Mysql三种扩展,从0.4alpha开始,ColaPHP支持MySQL主从模式,典型的Mysql配置信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$dbConfig = array(
'adapter' => 'Mysql',
'params' => array(
'host' => '127.0.0.1',
'port' => 3306,
'user' => 'root',
'password' => '',
'database' => 'test',
'charset' => 'utf8',
'persitent' => true
),
'master' => array(),
// 主服务器配置信息,键值和params一致
'slave' => array(),
// 多个从服务器配置信息,相当于多个params
'masterslave' => false
// 是否开启主从模式
);

指定适配器类型(目前支持Mysql、Mysqli、Pdo_Mysql三种),params中指定连接数据库的配置信息。所有配置信息通过$cola->config('_db', $dbConfig);配置到Cola实例中去。

Database的一些方法和市面上的Mysql类很相似,可以阅读一下代码获得(我会尽快补充详细,见谅。)

MVC

整个MVC的设计都是”贫血”的,只提供一些常用的,最简单的功能,目的是不想改变用户已有的编程方式,这样原来你怎么写MVC,现在还可以那么写。

Model的设计是为了便于数据层的开发,包括自动连接数据库服务器(单例模式,不用担心产生多个连接)、便宜的CRUD操作,可以参看Cola/Model.php文件。

一般情况下只有一个Mysql实例,如果需要多Mysql数据库、Mysql主从服务器,你可以重载db()函数来实现,如果是分表的话,可以通过重载table()来实现。

Controller主要完成一些逻辑操作,以及和显示层(View)的交互。

Cola_View是原生的PHP模板配置信息如下:

1
2
3
4
$viewConfig = array( 
'basePath' => '/path/to/view/home'
// 模版文件根路径
);

从0.4alpha开始,移除了对Smarty的绑定,主要是有点过于封装,实际意义不大,如果想用Smarty,可以直接在Controller中用。

更多精彩内容,请关注公众号 Golang语言开发栈公众号二维码
感谢赞赏.

Welcome to my other publishing channels