zoukankan      html  css  js  c++  java
  • 一步步搭建自己的轻量级MVCphp框架-(二)一个国产轻量级框架Amysql源码分析(1)

    这个框架是我一个做PHP的朋友“祥子”介绍给我的,Git地址https://coding.net/u/srar/p/AMP/git

    下面从入口文件 总线程 ( index.php )开始进行分析

    <?php
    
    define ('_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);				// 网站根目录
    define ('_Amysql', _ROOT . 'Amysql' . DIRECTORY_SEPARATOR);				// 系统目录
    define ('_Controller', _ROOT . 'Controller' . DIRECTORY_SEPARATOR);		     // 控制器目录
    define ('_Model', _ROOT . 'Model' . DIRECTORY_SEPARATOR);				// 模型目录
    define ('_Class', _ROOT . 'Class' . DIRECTORY_SEPARATOR);				// 对象类目录
    define ('_View', _ROOT . 'View' . DIRECTORY_SEPARATOR);					// 视图模板目录
    define ('_PathTag', '/');								// 载入下级目录文件标识 例如: 需载入 Model/user/vip.php 即使用 _mode('user/vip');
    
    define ('_Host', (empty($_SERVER["HTTPS"]) || $_SERVER['HTTPS'] == 'off' ? 'http://' : 'https://') . $_SERVER['HTTP_HOST']);		// 主机网址
    define ('_Http', _Host . str_ireplace('/index.php', '', $_SERVER['SCRIPT_NAME']) . '/');			// 网站根目录网址
    
    include(_Amysql . 'Config.php');  //配置文件
    include(_Amysql . 'Amysql.php');  //网站进程
    include(_Amysql . 'Function.php'); //内置函数
    
    $Amysql = new Amysql();
    $Amysql -> AmysqlProcess = new AmysqlProcess();	
    $Amysql -> AmysqlProcess -> ProcessStart();
    $Amysql -> AmysqlProcess -> ControllerStart();
    
    ?>
    

    这是主入口文件,因此就定义了一些全局变量,比如根目录地址ROOT,系统目录啊什么的。然后就把配置文件啊,框架主进程啊,内置函数啊使用include引入进来了。

    在这里我要说一下,其实按照我的想法,引入框架中的这种重要文件时还是使用require比较好,因为require时如果文件不存在会抛出一个致命性错误,将程序终止掉,但是include会继续执行,可能会造成下面更多的错误,而且对include()语句来说,在执行文件时每次都要进行读取和评估;而对于require()来说,文件只处理一次。这就意味着如果可能执行多次的代码,则使用require()效率比较高。

    局部解释:

    ① dirname(__FILE__):__FILE__这是PHP的一个内置魔术变量,作用就是返回当前文件所在地址,dirname(__FILE__)作用就是返回当前文件所在目录地址。

    ② DIRECTORY_SEPARATOR:这是由于在Windows环境中目录的分割线为"",而Linux中是"/",这就造成了框架在不同环境中不适用的问题,所以使用DIRECTORY_SEPARATOR来自动判断是使用""还是"/"。

    ③ empty($_SERVER["HTTPS"])||$_SERVER["HTTPS"]=='off':网上有一部分PHPer不是很理解什么时候$_SERVER["HTTPS"]=='off',在这里给解释一下,如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值,所以就有了前面的那一个判断,需要注意的是当使用 IIS 上的ISAPI 方式时,如果不是通过 HTTPS 协议被访问,这个值将为 off

    还有$_SERVER["HTTPS"]我个人认为转换一下大小写,全部使用小写比较好 strtolower($_SERVER['HTTPS'])

    ④ str_ireplace:str_replace的忽略大小写版本。

    ⑤ $_SERVER["SCRIPT_NAME"]:包含当前脚本的路径。这在页面需要指向自己时非常有用。与__FILE__ 常量不同的地方在于__FILE__包含当前脚本(例如包含文件)的完整路径和文件名。 

    下面是配置文件 ./Amysql/Config.php 这个文件没什么好分析的 都是定义了一些变量,直接上代码了

    <?php
    
    // 系统基本配置 **********************************************
    $Config['HttpPath'] = false;                // 是否开启 index.php/Controller/Action/name/value 模式
    $Config['Filter'] = true;                    // 是否过滤 $_GET、$_POST、$_COOKIE、$_FILES
    $Config['XSS'] = true;                        // 是否开启 XSS防范
    $Config['SessionStart'] = true;                // 是否开启 SESSION
    $Config['DebugPhp'] = true;                // 是否开启PHP运行报错信息
    $Config['DebugSql'] = false;                // 是否开启源码调试Sql语句
    $Config['CharSet'] = 'utf-8';                // 设置网页编码
    $Config['UrlControllerName'] = 'c';            // 自定义控制器名称 例如: index.php?c=index
    $Config['UrlActionName'] = 'a';                // 自定义方法名称 例如: index.php?c=index&a=IndexAction                        
    $Config['Index'] = 'index.php';                // 入口文件
    $Config['CacheType'] = 'Memcache';                //缓存类型 File, Memcache
    
    // 默认使用数据库配置 *****************************************
    
    $Config['ConnectTag'] = 'default';                // Mysql连接标识 可同时进行多连接
    $Config['Host'] = 'localhost';                    // Mysql主机地址
    $Config['User'] = 'root';                        // Mysql用户
    $Config['Password'] = 'root';                    // Mysql密码
    $Config['DBname'] = 'test';                        // 数据库名称
    
    // 文件缓存配置 **********************************************
    $Config['CacheFileDir'] = './Cache/';            // 文件缓存路径
    $Config['CacheDefaultTime'] = 3600;                // 默认缓存时间
    
    // Memcache缓存配置  ****************************************
    $Config['MemcacheHost'] = '127.0.0.1';            // Memcache主机地址
    $Config['MemcachePort'] = 11211;                // Memcache主机端口

    下一节将分析Amysql的主要进程~ 

  • 相关阅读:
    双启利器EasyBCD帮你找回消失了的Windows
    去掉不需要的加载项,让你的Office软件运行如飞
    Windows 7中的无损分区工具Partition Master
    IIS目录浏览模式时,ISO等文件显示不存在的解决方案
    必须常去论坛
    SSOについての英訳練習
    1月21日
    080124 (30,20)
    080122 (30,25)
    九局下半
  • 原文地址:https://www.cnblogs.com/echosoar/p/4593069.html
Copyright © 2011-2022 走看看