
1、路由
路由协议的规则是使用了正则表达的匹配,将不同的链接分发到不同的控制器上去,也支持调用匿名函数
// 第一种,使用匿名函数
App::router()->get('/', function () {
echo "Beauty Framework.";
// 第二种,使用url分发到控制器
App::router()->post('/user/info/[0-9]+(/[0-9]+)?', 'AppControllersUserController@getUserInfo');
2、控制器
没有的,你指向的哪里,就可以在哪里进行请求处理,但是按照MVC,建议写到Controller里,大家都是这么认为的,就这么做;
3、模型层
这里直接集成了Dao类,用于数据库查询操作,因为现在很多都在使用MySQL,就耦合地实现了MySQL的常规操作,因为数据库的原生操作会引起很多的注入等问题,没有支持直接Qquery的方式来做。
4、DAO层
因为很多情况下都要进行读写分离,但是要使用MySQL Proxy来实现,有太过笨重,所以实现了支持数据库query根据不同的sql分别使用master和slave数据库。
怎么做的?
就是根据不用的查询操作直接划分,Select查询操作直接分到读库,Insert、Update、Delete直接分到写库。也可以直接使用onMasterConnection/onSlaveConnection直接指定.
看看Select怎么做的,这部分是实现逻辑:
/**
* 获取查询内容,以数组形式返回,数据内为array。
*
* @access public
* @param integer|array $limit Array to define SQL limit in format Array ($count, $offset)
* or only $count
*
* @return mixed Array of Clients
*/
protected function get($limit = null)
{
$this->dbClient->setQueryChannel($this->channel);
$results = $this->dbClient->arrayBuilder()->get($this->dbTable, $limit, $this->fields);
$this->_reset();
if ($this->dbClient->count == 0) {
return [];
}
return $results;
}
5、配置类
在开发环境和生产环境会使用不同的配置环境,在框架中可以创建.env环境来切换。在config中可以常规设置development和production,使用哪个环境就在.env设置哪个
; This is a environment configuration file environment=development
6、请求响应
因为不需要View,只需要返回json数据,所以在Header直接写死了text/json。
以上就是php7写框架的方法,希望对大家有所帮助。更多php学习指路:php框架
本文转载于php中文网,如有侵犯联系作者修改。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4237/viewspace-2828670/ ,如需转载,请注明出处,否则将追究法律责任。