濮阳杆衣贸易有限公司

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

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

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

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

原文

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

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

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

有一點(diǎn)要注意的是:自動(dòng)加載在實(shí)例化類的時(shí)候執(zhí)行,也就是說(shuō)使用extends繼承類的時(shí)候,是不會(huì)自動(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)測(cè)試,以上代碼可用,全文完。

加更

經(jīng)測(cè)試上面的代碼,在訪問(wèn)不存在的控制器是會(huì)報(bào)錯(cuò),找不到相關(guān)類文件。因?yàn)槲覀內(nèi)鄙倥袛嘞嚓P(guān)類文件是否存在。因此,我們對(duì)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ù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP MVC框架中類的自動(dòng)加載機(jī)制實(shí)例分析》,本文關(guān)鍵詞  PHP,MVC,框架,中類,的,自動(dòng),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP MVC框架中類的自動(dòng)加載機(jī)制實(shí)例分析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于PHP MVC框架中類的自動(dòng)加載機(jī)制實(shí)例分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    巨鹿县| 泰安市| 安国市| 友谊县| 曲周县| 汉中市| 许昌县| 金湖县| 澎湖县| 琼海市| 盘山县| 惠东县| 奉新县| 于都县| 平安县| 浙江省| 资中县| 拜城县| 盱眙县| 东方市| 秀山| 五河县| 武平县| 梁河县| 名山县| 大厂| 通江县| 长宁县| 蕲春县| 桐城市| 平陆县| 吉木乃县| 马龙县| 伊金霍洛旗| 肇源县| 拉孜县| 郯城县| 恭城| 融水| 蒙城县| 黄石市|