您好,欢迎访问一九零五行业门户网

基于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 fileenvironment=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框架smarty扩展实现方法,zendsmarty
zend framework框架路由机制代码分析,zendframework
以上就是基于php7实现的beauty framework框架(附代码)的详细内容。
其它类似信息

推荐信息