欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP函數(shù)spl_autoload_register()用法和__autoload()介紹

 更新時間:2012年02月04日 16:15:18   投稿:mdxy-dxy  
又是框架沖突導致__autoload()失效,用spl_autoload_register()重構一下,問題解決

__autoload()的用法就不再說了,以前已經在我的WEB開發(fā)筆記中說過。PHP __autoload函數(shù)(自動載入類文件)的使用方法, 原文地址:http://www.dbjr.com.cn/article/29625.htm 。

說一說,spl_autoload_register()的用法吧,很簡單,可以這樣理解,就是聲明一個自定義__autoload(),你可以是A函數(shù),也可以是B函數(shù),想怎么樣就怎么樣,函數(shù)體的寫法,當然要和__autoload()一樣就OK 了。

當PHP找不到類文件會調用這個方法,當注冊了自己的函數(shù)或方法時,PHP不會調用__autoload()函數(shù),而會調用自定義的函數(shù)

spl_autoload_register(‘func_name');
spl_autoload_register(array(‘class_name','method_name'));

詳細說明如下:

spl_autoload_register
(PHP 5>= 5.1.2)
spl_autoload_register — 注冊__autoload()函數(shù)
說明
bool spl_autoload_register ([ callback $autoload_function ] )
將函數(shù)注冊到SPL __autoload函數(shù)棧中。如果該棧中的函數(shù)尚未激活,則激活它們。
如果在你的程序中已經實現(xiàn)了__autoload函數(shù),它必須顯式注冊到__autoload棧中。因為
spl_autoload_register()函數(shù)會將Zend Engine中的__autoload函數(shù)取代為spl_autoload()或
spl_autoload_call()。
參數(shù)
autoload_function
欲注冊的自動裝載函數(shù)。如果沒有提供任何參數(shù),則自動注冊autoload的默認實現(xiàn)函數(shù)
spl_autoload()。
返回值
如果成功則返回 TRUE,失敗則返回 FALSE。
注:SPL是Standard PHP Library(標準PHP庫)的縮寫。它是PHP5引入的一個擴展庫,其主要功能包括autoload機制的實現(xiàn)及包括各種Iterator接口或類。SPL autoload機制的實現(xiàn)是通過將函數(shù)指針autoload_func指向自己實現(xiàn)的具有自動裝載功能的函數(shù)來實現(xiàn)的。SPL有兩個不同的函數(shù)spl_autoload, spl_autoload_call,通過將autoload_func指向這兩個不同的函數(shù)地址來實現(xiàn)不同的自動加載機制。

代碼如下:

test.class.php

<?php 
class abc{ 
function __construct() 
{ 
echo 'www.chhua.com; 
} 
} 
?>

load.php

<?php 
class LOAD 
{ 
static function loadClass($class_name) 
{ 
$filename = $class_name.".class.php"; 
if (is_file($filename)) return include_once $filename; 
} 
} 
/** 
* 設置對象的自動載入 
* spl_autoload_register — Register given function as __autoload() implementation 
*/ 
spl_autoload_register(array('LOAD', 'loadClass')); 
$a = new Test();//實現(xiàn)自動加載,很多框架就用這種方法自動加載類 
?> 

spl_autoload_register裝載函數(shù)的正確寫法

AutoLoading\loading

<?php
namespace AutoLoading;

class Loadind {
 public static function autoload($className){
        //根據(jù)PSR-O的第4點 把 \ 轉換層(目錄風格符)   DIRECTORY_SEPARATOR , 
    //便于兼容Linux文件找。Windows 下(/ 和 \)是通用的
    //由于namspace 很規(guī)格,所以直接很快就能找到
    $fileName = str_replace('\\', DIRECTORY_SEPARATOR, DIR . '\\'. $className) . '.php';
    if (is_file($fileName)) {
      require $fileName;
    } else {
      echo $fileName . ' is not exist'; die;
    }    }   
}

index.php

//定義當前的目錄絕對路徑
define('DIR', dirname(__FILE__));
//加載這個文件
require DIR . '/loading.php';
//采用`命名空間`的方式注冊。php 5.3 加入的
//也必須是得是static靜態(tài)方法調用,然后就像加載namespace的方式調用,注意:不能使用use
spl_autoload_register("\\AutoLoading\\loading::autoload"); 
// 調用三個namespace類
//定位到Lib目錄下的Name.php 
Lib\Name::test();
//定位到App目錄下Android目錄下的Name.php
App\Android\Name::test();
//定位到App目錄下Ios目錄下的Name.php
App\Ios\Name::test();

相關文章

  • 生成ubuntu自動切換壁紙xml文件的php代碼

    生成ubuntu自動切換壁紙xml文件的php代碼

    運行代碼后在圖片目錄下會生成yuxing.xml,方便ubuntu自動切換壁紙.
    2010-07-07
  • PHP利用ChatGPT實現(xiàn)輕松創(chuàng)建用戶注冊頁面

    PHP利用ChatGPT實現(xiàn)輕松創(chuàng)建用戶注冊頁面

    ChatGPT?是?OpenAI?開發(fā)的?GPT語言模型的變體,它是一種大型單向語言模型。本文就來利用ChatGPT創(chuàng)建簡單的用戶注冊頁面,感興趣的可以了解一下
    2023-02-02
  • php實現(xiàn)猴子選大王問題算法實例

    php實現(xiàn)猴子選大王問題算法實例

    這篇文章主要介紹了php實現(xiàn)猴子選大王問題算法,實例分析了算法的原理與解決方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • php把文件設置為插件的技巧方法

    php把文件設置為插件的技巧方法

    在本篇文章里小編給大家分享的是關于php把文件設置為插件的技巧方法,有需要的朋友們可以參考學習下。
    2020-02-02
  • 教你識別簡單的免查殺PHP后門

    教你識別簡單的免查殺PHP后門

    這類后門讓網(wǎng)站、服務器管理員很是頭疼,經常要換著方法進行各種檢測,而很多新出現(xiàn)的編寫技術,用普通的檢測方法是沒法發(fā)現(xiàn)并處理的。今天我們細數(shù)一些有意思的PHP一句話木馬。
    2015-09-09
  • php禁止某ip或ip地址段訪問的方法

    php禁止某ip或ip地址段訪問的方法

    這篇文章主要介紹了php禁止某ip或ip地址段訪問的方法,涉及服務器變量$_SERVER、文件及字符串的操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • iis6手工創(chuàng)建網(wǎng)站后無法運行php腳本的解決方法

    iis6手工創(chuàng)建網(wǎng)站后無法運行php腳本的解決方法

    下面小編就為大家?guī)硪黄猧is6手工創(chuàng)建網(wǎng)站后無法運行php腳本的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • PHP 函數(shù)學習簡單小結

    PHP 函數(shù)學習簡單小結

    下面是一些php下經常用的函數(shù),都是些必須要知道的函數(shù),只有知道有個函數(shù)與功能,才可能組裝成完整的功能強大的系統(tǒng)。
    2010-07-07
  • 在Mac OS下搭建LNMP開發(fā)環(huán)境的步驟詳解

    在Mac OS下搭建LNMP開發(fā)環(huán)境的步驟詳解

    這篇文章主要介紹了在Mac OS下搭建LNMP開發(fā)環(huán)境的步驟,文中通過一步步的步驟介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • PHP設計模式之模板方法模式Template Method Pattern詳解

    PHP設計模式之模板方法模式Template Method Pattern詳解

    在我們實際開發(fā)中,如果一個方法極其復雜時,如果我們將所有的邏輯寫在一個方法中,那維護起來就很困難,要替換某些步驟時都要重新寫,這樣代碼的擴展性就很差,當遇到這種情況就要考慮今天的主角——模板方法模式
    2022-12-12

最新評論