一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP MVC框架中類的自動加載機制實例分析

PHP MVC框架中類的自動加載機制實例分析

2021-08-19 16:57koastal PHP教程

這篇文章主要介紹了PHP MVC框架中類的自動加載機制,結合實例形式分析了MVC框架中類的自動加載機制原理、實現(xiàn)方法及相關操作注意事項,需要的朋友可以參考下

本文實例講述了PHP MVC框架中類的自動加載機制。分享給大家供大家參考,具體如下:

原文

 

實現(xiàn)類的自動加載主要使用到了set_include_pathspl_autoload_register函數(shù)。

set_include_path用于提前設置好可能會加載的類的路徑。

spl_autoload_register用于調用相關自動加載所需類的函數(shù),實現(xiàn)自動載入的功能。

有一點要注意的是:自動加載在實例化類的時候執(zhí)行,也就是說使用extends繼承類的時候,是不會自動加載父類的。

設置目錄如下:

PHP MVC框架中類的自動加載機制實例分析

實現(xiàn)自動加載功能相關的文件有:Loader.php,config.php,boot.php,index.php

config.php

?
1
2
3
4
5
6
7
8
9
10
11
<?php
/**
 * Created by PhpStorm.
 * User: koastal
 * Date: 2016/5/15
 * Time: 10:48
 */
define("APP_PATH",__DIR__."/..");
define("Controller_PATH",__DIR__."/../controller");
define("Model_PATH",__DIR__."/../model");
define("View_PATH",__DIR__."/../view");

Loader.php

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
/**
 * Created by PhpStorm.
 * User: koastal
 * Date: 2016/5/15
 * Time: 12:03
 */
class Loader
{
  public static function baseLoad()
  {
    require_once("Controller.php");
    require_once("Model.php");
  }
  public static function autoload($class)
  {
    $path = $class.".class.php";
    require_once($path);
  }
}
$include = array(Controller_PATH, Model_PATH,View_PATH);
set_include_path(get_include_path() . PATH_SEPARATOR .implode(PATH_SEPARATOR, $include));
spl_autoload_register(array('Loader', 'autoload'));
Loader::baseLoad();

boot.php

?
1
2
3
4
5
6
7
8
<?php
/**
 * Created by PhpStorm.
 * User: koastal
 * Date: 2016/5/15
 * Time: 12:19
 */
require_once("Loader.php");

index.php

?
1
2
3
4
5
<?php
require_once(__DIR__."/libs/config.php");
require_once(__DIR__."/libs/boot.php");
$obj = new testController();
$obj->show();

經(jīng)測試,以上代碼可用,全文完。

加更

經(jīng)測試上面的代碼,在訪問不存在的控制器是會報錯,找不到相關類文件。因為我們缺少判斷相關類文件是否存在。因此,我們對Loader.php進行優(yōu)化,首先掃描相關類文件是否存在,如果不存在則報錯。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
/**
 * Created by PhpStorm.
 * User: koastal
 * Date: 2016/5/15
 * Time: 12:03
 */
require_once 'config.php';
class Loader
{
  public static function baseLoad()
  {
    require_once("Controller.php");
    require_once("Model.php");
  }
  public static function searchFile($filename,$path)
  {
    $filePath = false;
    $list = scandir($path);
    foreach($list as $file){
      $realPath = $path.DIRECTORY_SEPARATOR.$file;
      if(is_dir($realPath) && $file!='.' && $file!='..'){
        $res = Loader::searchFile($filename,$realPath);
        if($res){
          return $res;
        }
      }elseif($file!='.' && $file!='..'){
        if($file == $filename){
          $filePath = $realPath;
          break;
        }
      }
    }
    return $filePath;
  }
  public static function autoload($class)
  {
    $filename = $class.".class.php";
    $cflag = Loader::searchFile($filename,Controller_PATH);
    $mfalg = Loader::searchFile($filename,Model_PATH);
    $path = false;
    $path = ($cflag != false)? $cflag:$path;
    $path = ($mfalg != false)? $mfalg:$path;
    if($path == false){
      exit("Class Load Failed.");
    }else{
      require_once($path);
    }
  }
}
Loader::baseLoad();
spl_autoload_register(array('Loader', 'autoload'));

希望本文所述對大家PHP程序設計有所幫助。

原文鏈接:https://blog.csdn.net/koastal/article/details/51417030

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人亚洲精品一区二区在线看 | 亚洲成色WWW久久网站夜月 | 免费看日产一区二区三区 | 欧美视频在线一区二区三区 | 热热99| 国产精品亚欧美一区二区三区 | 久久成人a毛片免费观看网站 | 免费高清在线视频色yeye | 国产资源免费观看 | 久久91精品国产91久久户 | 女人爽到喷水的视频免费 | 暴露狂婷婷 | 欧美娇小性xxxx | 成人精品一区二区三区 | 久久视频在线视频 | 国产成人性色视频 | 欧美最新在线 | 久久综合网久久综合 | 国产一卡二卡3卡4卡更新 | 日韩在线中文字幕 | 动漫女性扒开尿口羞羞漫画 | 欧美做受 | 五月丁香啪啪. | 床戏小说 | 55夜色66夜亚州精品站 | 亚洲精品精品一区 | 99自拍视频在线观看 | 扒开尿口 | 99毛片| 校花在公车上被内射好舒服 | 欧美成人午夜片一一在线观看 | 日本天堂网 | 2021最新国产成人精品免费 | 91精品国产综合久 | 糖心vlog视频永久破解版 | 国自产在线精品免费 | 欧美腐剧mm在线观看 | 香蕉久久高清国产精品免费 | 国产三级精品91三级在专区 | av魔镜收集号 | 免费波多野结衣庭教师 |