国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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框架中類的自動加載機制原理、實現方法及相關操作注意事項,需要的朋友可以參考下

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

原文

 

實現類的自動加載主要使用到了set_include_pathspl_autoload_register函數。

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

spl_autoload_register用于調用相關自動加載所需類的函數,實現自動載入的功能。

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

設置目錄如下:

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

實現自動加載功能相關的文件有: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();

經測試,以上代碼可用,全文完。

加更

經測試上面的代碼,在訪問不存在的控制器是會報錯,找不到相關類文件。因為我們缺少判斷相關類文件是否存在。因此,我們對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
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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 好看的一级毛片 | 午夜国产在线 | 色交视频 | 成人在线手机版视频 | 日韩在线视频观看 | 中国大陆高清aⅴ毛片 | 97人人草| 成人欧美一区二区 | 成人在线看片 | 日韩精品日韩激情日韩综合 | 日韩电影免费在线观看中文字幕 | 国产免费天天看高清影视在线 | 韩国三级午夜理伦三级三 | 久久久久久国产一级毛片高清版 | 一区二区三区四区免费 | 成年人免费网站 | 精品日韩在线观看 | 欧洲一区二区在线观看 | 国产精品一区二 | 精品一区二区电影 | 黄色三级免费网站 | 国产精品亚洲成在人线 | 毛片一级片 | 亚洲国产色视频 | 日韩欧美久久 | 成人黄网视频在线观看 | 欧美视频在线播放 | 日本一区二区免费在线观看 | 9191国产视频| 国产日韩精品在线观看 | 中文字幕二区 | 精品国产一区二区三区久久久蜜 | 欧美喷潮久久久xxxxx | 欧美日韩国产在线观看 | 91精品一区二区 | 欧洲免费视频 | 日韩精品极品视频在线观看免费 | av色综合 | 亚洲毛片在线观看 | 欧美区日韩区 | 国产午夜精品一区二区三区 |