美文网首页PHP经验分享
PHP项目目录布局和文件加载

PHP项目目录布局和文件加载

作者: kangyiii | 来源:发表于2017-03-31 09:07 被阅读0次

    站点根目录 例如 MyShoppingMall

    入口文件一般出现在根目录(index.php)

    框架代码目录与应用程序代码目录

    框架代码:使用的第三方框架或者工具类

    框架代码
    应用代码: 当前项目的业务逻辑实现代码
    应用代码

    平台划分(module,group)
    前端:商城展示界面
    后台:后台管理界面


    整体项目目录

    加载文件

    1. 配置虚拟目录
      在httpd-vhost文件中配置虚拟目录


      配置虚拟目录
    2. 在host文件中设置访问入口

    127.0.0.1 shop.kang.com
    
    1. 修改需要载入的文件路径
      由于文件放在不同的目录,所以每一类文件的相对路径都不大相同,所以要有一个办法来加载这些放在不同文件夹下的文件
      注意:使用getCWD()可以用来获得当前工作目录。current working directory
    自动记载

    控制器类,模型类,框架核心类
    我们通常将所有的类分为两大类型

    1. 可以确定的类(自动加载方法确定时,类文件就能确定的):对于这些类,采用最简单的方式进行加载
    2. 可以被扩展的类(还没创建的类,但有一定规律):需要通过类名的规律,完成位置判断,进而完成自动加载
    /**
     * 自动加载类文件函数
     */
    function userAutoLoad($class_name){
        //先处理确定的(框架中的核心类)
        //类名与类文件映射数组
        $framework_class_list = array(
            //'类名'=>'类文件地址'
            'Controller'=>'./framework/Controller.class.php',
            'Model'=>'./framework/Model.class.php',
            'Factory'=>'./framework/Factory.class.php',
            'MySQLDB'=>'./framework/MySQLDB.class.php'
        );
        //判断是否为核心类
        if(isset($framework_class_list[$class_name]){
            //核心类
            require $framework_class_list[$class_name];
        }else if(substr($class_name,-10)=='Controller'){
            //判断是否为可增加(控制器类,模型类)
            //截取后10个字符匹配Controller
            require './application/'.PLATFORM.'/controller/'.$class_name.'.class.php';
        }else if(substr($class_name,-5)=='Model'){
            require './application'.PLATFORM.'/model/'.$class_name.'.class.php';
        }
    }
    spl_autoload_register('userAutoLoad');
    
    目录常量地址

    使用目录常量,可避免项目后期目录文件名修改导致的到规模修改文件路径的问题

    目录常量

    使用之后,所有的文件地址都由常量来替换


    替换后代码

    相关文章

      网友评论

        本文标题:PHP项目目录布局和文件加载

        本文链接:https://www.haomeiwen.com/subject/weouottx.html