PHP項目目錄布局和文件加載

站點根目錄 例如 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');
目錄常量地址

使用目錄常量,可避免項目后期目錄文件名修改導致的到規模修改文件路徑的問題

目錄常量

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


替換后代碼
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容