只需要添加新的模块
框架本身便是模块组成的
- 框架由五个核心文件组成
- 其它全部作为框架的模块而存在
- 通过调用底层事件(钩子)使框架得以运作
- 添加新模块便可添加新功能
配合四个功能添加新模块
- 扩展开发 可以写一些额外的小功能通过安装的方式改变系统的逻辑
- 预先加载可分两个, 一个是通过配置文件中的预先加载代码, 一个是通过of::link预先注册L类方法, 来实现一些新功能
- 还可通过事件监听, 注册系统的或框架的钩子来触发回调, 进行深度的功能开发
借用SQL构造器的一个例子
创建构造核心文件 of/base/sqlQuery/builder.php
<?php
/**
* 描述 : sql请求构造器演示类
*/
class of_base_sqlQuery_builder {
private $params = array();
/**
* 描述 : 构造函数
* 参数 :
* &data : 构造数据
* &pool : 连接池
*/
public function __construct(&$data, &$pool) {
$this->params['data'] = &$data;
$this->params['pool'] = &$pool;
}
/**
* 描述 : 指定操作表名
* 参数 :
* table
* 返回 :
* 当前对象
*/
public function &from($table) {
$this->params['table'] = &$table;
return $this;
}
/**
* 描述 : 指定操作条件
* 参数 :
* where
* 返回 :
* 当前对象
*/
public function &where($where) {
$this->params['where'] = &$where;
return $this;
}
/**
* 描述 : 执行查询操作
* 参数 :
* limit
* 返回 :
* 当前对象
*/
public function &select($limit = null) {
$index = &$this->params;
$sql = 'SELECT `' . join('`, `', $index['data']) . '`';
$sql .= ' FROM ' . $index['table'];
empty($index['where']) || $sql .= ' WHERE ' . $index['where'];
$limit === null || $sql .= ' LIMIT ' . $limit;
return of_db::sql($sql, $index['pool']);
}
/**
* 描述 : 消息初始化
* 返回 :
* 参数为数组时返回构造对象, 其它返回执行结果
*/
public static function &init(&$sql, &$key) {
//实例化构造对象
if (is_array($sql)) {
$result = new self($sql, $key);
//bool, null, string 直接查询
} else {
$result = &of_db::sql($sql, $key);
}
return $result;
}
}
//注册快捷方法, 重写SQL执行方式
of::link('&sql', '$sql, $key = \'default\'', 'return of_base_sqlQuery_builder::init($sql, $key);');
框架配置文件设置预加载类
<?php
//修改框架配置文件中的 preloaded 项
return array(
//预先装载类
'preloaded' => array(
//加载SQL构造器
'of_base_sqlQuery_builder '
)
);
调用演示
<?php
$data = L::sql(array('id', 'name'))
->from('_of_sso_func')
->where('id > 1')
->select('2, 3');
print_r($data);