主頁 > 知識庫 > PHP MVC框架中類的自動(dòng)加載機(jī)制實(shí)例分析

PHP MVC框架中類的自動(dòng)加載機(jī)制實(shí)例分析

熱門標(biāo)簽:高德地圖標(biāo)注家 廣州防封卡外呼系統(tǒng)多少錢一個(gè)月 外呼系統(tǒng)撥打暫時(shí)無法接通 長春人工外呼系統(tǒng)服務(wù)商 廣東地市地圖標(biāo)注 怎么向銷售公司推銷外呼系統(tǒng) 哪里辦理400電話 江西手機(jī)自動(dòng)外呼防封系統(tǒng)是什么 仁和怎么申請400開頭的電話

本文實(shí)例講述了PHP MVC框架中類的自動(dòng)加載機(jī)制。分享給大家供大家參考,具體如下:

原文

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

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

spl_autoload_register用于調(diào)用相關(guān)自動(dòng)加載所需類的函數(shù),實(shí)現(xiàn)自動(dòng)載入的功能。

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

設(shè)置目錄如下:

實(shí)現(xiàn)自動(dòng)加載功能相關(guān)的文件有:Loader.php,config.php,boot.php,index.php

config.php

?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

?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

?php
/**
 * Created by PhpStorm.
 * User: koastal
 * Date: 2016/5/15
 * Time: 12:19
 */
require_once("Loader.php");

index.php

?php
require_once(__DIR__."/libs/config.php");
require_once(__DIR__."/libs/boot.php");
$obj = new testController();
$obj->show();

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

加更

經(jīng)測試上面的代碼,在訪問不存在的控制器是會報(bào)錯(cuò),找不到相關(guān)類文件。因?yàn)槲覀內(nèi)鄙倥袛嘞嚓P(guān)類文件是否存在。因此,我們對Loader.php進(jìn)行優(yōu)化,首先掃描相關(guān)類文件是否存在,如果不存在則報(bào)錯(cuò)。

?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'));

更多關(guān)于php框架相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php優(yōu)秀開發(fā)框架總結(jié)》、《codeigniter入門教程》、《ThinkPHP入門教程》、《Zend FrameWork框架入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • php框架CI(codeigniter)自動(dòng)加載與自主創(chuàng)建對象操作實(shí)例分析
  • PHP類的自動(dòng)加載與命名空間用法實(shí)例分析
  • PHP 命名空間和自動(dòng)加載原理與用法實(shí)例分析
  • PHP 自動(dòng)加載類原理與用法實(shí)例分析
  • php自動(dòng)加載代碼實(shí)例詳解

標(biāo)簽:惠州 廈門 黔東 海北 梅河口 濮陽 湘西 文山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP MVC框架中類的自動(dòng)加載機(jī)制實(shí)例分析》,本文關(guān)鍵詞  PHP,MVC,框架,中類,的,自動(dòng),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP MVC框架中類的自動(dòng)加載機(jī)制實(shí)例分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP MVC框架中類的自動(dòng)加載機(jī)制實(shí)例分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章