PHP“企业模式”直观描述(lavale,yii,thinkph

2020-09-07  本文已影响0人  美雨知春

相信大家都接触过php框架吧,lavale,yii,thinkphp,简单来书这些都是企业模式。

这些模板虽然各不相同,各具优势,但是归根结底都是一样的,框架直接拿来使用很痛快,但是如果能够深入挖掘这些框架,会有更深入的理解,针对不同的业务可以有自己的框架。

注册表(全局配置信息-数据库,用户请求信息)-》用户请求数据分析-》找到执行文件执行用户请求-》返回页面(或者数据)

单例模式建立注册表,这部分在“单例模式中”有介绍,把数据库配置和用户请求做成全局变量,便于传输

用户请求信息分析:对用户信息指令进行分析,找到执行文件执行

返回页面,或者结果:如果需要页面直接include一个页面,如果需要结果,返回一个json

全是文字,没有代码是吧。之前写过

下面是一个注册表:

``<?php

namespace woo\base;

class ApplicationRegistry extends Registry{

    private static $instance;

    private $freezedir ='data';

    private $values = array();

    private $mtimes = array();

    private function instance(){

        if(!isset(self::$instance)){

            self::$instance = new self();

        }

        return self::$instance;

    }

    protected function get($key){

        $path = $this->freezedir.DIRECTORY_SEPARATOR.$key;

        if(file_exists($path)){

            clearstatcache();

            $mtime = filemtime($path);

            if(! isset($this->mtimes[$key])){

                $this->mtimes[$key]=0;

            }

            if($mtime > $this->mtimes[$key]){

                $data = file_get_contents($path);

                return $this->values[$key] = unserialize($data);

            }

        }

        if(isset($this->values[$key])){

            return $this->values[$key];

        }

        return null;

    }

    protected function set($key, $val){

        $this->values[$key] = $val;

        $path = $this->freezedir.DIRECTORY_SEPARATOR.$key;

        file_put_contents($path, serialize($val));

        $this->mtimes[$key] = time();

    }

    static function getDSN(){

        return self::$instance->get('dsn');

    }

}``

指令分析

class CommandResolver{

function getCommand( $request)

{   //这块大家发挥的空间很大,可以随意哦

}

function execute()

{

    include("cmdfile");

}

怎么组合?,告诉你,一个run()可以init配置,加载request,execute

如果有人看到我的技术文章,有疑问,欢迎私信,有问必答

上一篇下一篇

猜你喜欢

热点阅读