首页 技术 正文
技术 2022年11月18日
0 收藏 937 点赞 2,568 浏览 2649 个字

构建基础架构

在项目文件夹(自定义)下创建

(1)核心目录:WQ

(2)模板目录:MoBan

(3)编译目录:BianYi

(4)创建配置文件: config.ini.php

<?php//获取文件所在目录$Gen=dirname(__FILE__);//设置模板目录define('MoBan',$Gen.'/MoBan/');//设置核心类目录define('WQ',$Gen.'/WQ/');//设置编译文件目录define('BianYi',$Gen.'/BianYi/');//加载核心类include WQ.'WQ.class.php';//调用核心类$wq=new WQ();

(5)在核心目录WQ下创建系统核心类WQ.class.php

<?php//系统核心类class WQ{    //变量成员(一个可以放下无数变量的数组)    private $BianLiang = array();    //构造方法    public function __construct()    {        if(!is_dir(MoBan) || !is_dir(BianYi))        {            exit("模板目录:MoBan 或 编译目录:BianYi 不存在!请手动创建");        }    }    //注册变量的方法    public function assign($key,$value)    {        if(empty($key))        {            exit("错误:注册变量名不能为空");        }        $this->BianLiang["$key"]=$value;    }    //调用模板的方法    public function display($MoBanMing)    {        //获取模板路径        $MoBanLuJing=MoBan.$MoBanMing;        //容错,当模板不存在时        if(!file_exists($MoBanLuJing))        {            exit('错误:模板文件不存在');        }        //编译文件路径        $BianYiLuJing=BianYi.md5($MoBanMing).$MoBanMing.'.php';        //生成编译文件        if(!file_exists($BianYiLuJing) || filemtime($BianYiLuJing)<filemtime($MoBanLuJing))        {            //引入解析类文件,实例化解析类并调用解析方法            include WQ.'JieXi.class.php';            $JieXi= new JieXi($MoBanLuJing);            $JieXi->jiexi($BianYiLuJing);        }        //载入编译文件        include $BianYiLuJing;    }}

(5)在核心目录WQ下创建模板解析类JieXi.class.php

<?php//模板解析类class JieXi{    private $MoBanNeiRong;    //构造方法    public function __construct($MoBanLuJing)    {        if(!$this->MoBanNeiRong=file_get_contents($MoBanLuJing))        {            exit('错误:模板文件读取错误');        }    }    //对外公共方法    public function jiexi($BianYiLuJing)    {        //调用普通变量解析法        $this->jiexi_bianliang();        //调用foreach标签解析法        $this->jiexi_foreach();        //生成编译文件        if(!file_put_contents($BianYiLuJing,$this->MoBanNeiRong))        {            exit('错误:编译文件生成失败');        }    }    //解析普通变量    private function jiexi_bianliang()    {        //赋值变量解析正则        $ZhengZe='/<\{\$([\w]+)\}>/';        if(preg_match($ZhengZe,$this->MoBanNeiRong))        {            $TiHuan="<?php echo \$this->BianLiang['$1'] ?>";            //替换解析模板变量            $this->MoBanNeiRong=preg_replace($ZhengZe,$TiHuan,$this->MoBanNeiRong);        }    }    //解析foreach标签    private function jiexi_foreach()    {        //赋值解析正则        $ZhengZe="/<\{foreach\s+([\w]+)\(([\w]+),([\w]+)\)\}>/";        $ZhengZe_end="/<\{\/foreach\}>/";        $ZhengZe_nei="/<\{([\w]+)\}>/";        if(preg_match($ZhengZe,$this->MoBanNeiRong))        {            if(preg_match($ZhengZe_end,$this->MoBanNeiRong))            {                //替换模板标签foreach                $this->MoBanNeiRong=preg_replace($ZhengZe_end,'<?php } ?>',$this->MoBanNeiRong);                $TiHuan="<?php foreach(\$this->BianLiang['$1'] as \$$2 => \$$3){ ?>";                $this->MoBanNeiRong=preg_replace($ZhengZe,$TiHuan,$this->MoBanNeiRong);                if(preg_match($ZhengZe_nei,$this->MoBanNeiRong))                {                    //替换foreach标签索引及变量                    $TiHuan="<?php echo \$$1 ?>";                    $this->MoBanNeiRong=preg_replace($ZhengZe_nei,$TiHuan,$this->MoBanNeiRong);                }            }            else            {                exit("错误:foreach标签没有封闭");            }        }    }}

跨域访问 : 接口的书写声明 

//接口头函数,允许所有ip访问header('Access-Control-Allow-Origin:*');  //定义访问形式header("Access-Control-Allow-Methods:HEAD,POST,GET,PUT,DELETE,OPTIONS");//响应头设置(如果设置,启动页面也需要设置)//header('Access-Control-Allow-Headers:x-requested-with,content-type');        
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,086
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,561
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,410
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,183
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,820
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,903