php7 framework,基于php7实现的Beauty Framework框架(附代码)

这篇文章给大家介绍的内容是关于基于php7实现的Beauty Framework框架(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助

框架的核心链路是从开始的请求路由解析到控制器的分发,model的数据交互到响应。

使用其他的框架实现会非常的笨重,集成的内容太多,很多都不需要用到,所以借鉴其他框架写了一个简单实用的框架。

先从路由开始来说:

1)路由

路由协议的规则是使用了正则表达的匹配,将不同的链接分发到不同的控制器上去,也支持调用匿名函数// 第一种,使用匿名函数

App::router()->get('/', function () {

echo "Beauty Framework.";

});// 第二种,使用url分发到控制器

App::router()->post('/user/info/[0-9]+(/[0-9]+)?', 'App\Controllers\UserController@getUserInfo');

其中实现的核心代码:(是不是很简单)if (is_string($lostrcallable) && preg_match('!^([\a-zA-Z0-9]+)\@([a-zA-Z0-9]+)$!', $lostrcallable, $matches)) {

$class = $matches[1];

$method = $matches[2];

$callable = function () use ($class, $method) {

static $obj = null;

if ($obj === null) {

$obj = new $class;

}

return call_user_func_array(array($obj, $method), func_get_args());

};

}

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

当然也有一些公共的配置信息,可以在config文件里直接设置,这样就可以在哪个环境都可以使用。// 支持使用.连接访问配置项,访问的是config/app.php中的config key

\Beauty\Core\App::config()->get("app.config");

6)请求响应

因为不需要View,只需要返回json数据,所以在Header直接写死了text/json。 = =

其他实现了memcache和redis采用一致性哈希访问不同的实例。

validator验证类

具体代码都在github上 https://github.com/tigerk/Beauty

相关文章推荐:Zend Framework框架路由机制代码分析,zendframework

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值