1. 程式人生 > >spl_autoload_register()函式

spl_autoload_register()函式

功能說明

將函式註冊到SPL __autoload函式棧中。如果該棧中的函式尚未啟用,則啟用它們。

注:SPL是Standard PHP Library(標準PHP庫)的縮寫。它是PHP5引入的一個擴充套件庫,其主要功能包括autoload機制的實現及包括各種Iterator介面或類。 SPL autoload機制的實現是通過將函式指標autoload_func指向自己實現的具有自動裝載功能的函式來實現的。SPL有兩個不同的函式 spl_autoload, spl_autoload_call,通過將autoload_func指向這兩個不同的函式地址來實現不同的自動載入機制。

實戰練習

建立一個類檔案A.php,定義一個名字為A的類

<?php   
class A {
    public function __construct() {   
        echo 'Got it.';
    }
}

建立index.php,要想在index.php中使用類A,常規寫法為

<?php   
require('A.php');   
$a = new A();

但是,本人不想每次使用類A都要寫一段require語句,而是希望使用類A時,系統可以自動載入A.php檔案,在php5及之後版本中就可以使用__autoload函式來進行自動類載入

<?php
function __autoload($class) { $file = $class.'.php'; if (is_file($file)) { require_once($file); } } $a = new A();

如果不想使用預設的__autoload函式,而是使用自定義函式,則需要使用spl_autoload_register()來進行註冊

function autoload($class) {
    $file = $class.'.php';
    if (is_file($file)) {
        require_once
($file); } } spl_autoload_register('autoload'); $a = new A();

下面這種寫法也是同樣的效果

<?php   
class Loader {
    function autoload($class) {
        $file = $class.'.php';
        if (is_file($file)) {
            require_once($file);
        }
    }
}

spl_autoload_register(array('Loader', 'loadClass'));   

$a = new A();

相關推薦

spl_autoload_register()函式

功能說明 將函式註冊到SPL __autoload函式棧中。如果該棧中的函式尚未啟用,則啟用它們。 注:SPL是Standard PHP Library(標準PHP庫)的縮寫。它是PHP5引入的一個擴充套件庫,其主要功能包括autoload機制的實現及

詳解spl_autoload_register()函式以及自動載入不同目錄的類

在瞭解spl_autoload_register()函式之前,先來看另一個函式:__autoload。  一、__autoload  這是一個自動載入函式,在PHP5中,當我們例項化一個未定義的

PHP的spl_autoload_register建立autoload函式的佇列問題

       sql_autoload_register 函式是註冊給定的函式作為__autoload的實現,它將函式註冊到SPL autoload佇列中並激活。本文主要講spl_autoload_register函式中的佇列問題,更詳細的用法請參看手冊或

spl_autoload_register 註冊自己的自動載入函式(__autoload())

說明: PHP例項化沒有載入的類的,會自動呼叫__autoload();函式載入,可以通過__autolaod()函式來require類,解決很多類,多次require的問題, 可以通過spl的標準PHP 庫函式Standard PHP Library (SPL) 的 autoload 的方法spl_aut

PHP 名稱空間與自動載入機制介紹,spl_autoload_register, __autoload 函式

include 和 require 是PHP中引入檔案的兩個基本方法。在小規模開發中直接使用 include 和 require 沒喲什麼不妥,但在大型專案中會造成大量的 include 和 require 堆積。這樣的程式碼既不優雅,執行效率也很低,而且維護起來也相當困難。 為了解決這個問題,部分框

spl_autoload_register與autoload的區別詳解

版本 函數地址 call() ech log 自己的 正常 lba 功能 spl_autoload_register(PHP 5 >= 5.1.2)spl_autoload_register — 註冊__autoload()函數說明bool spl_autoload_

PHP中spl_autoload_register函數的用法

版本 說明 standard rar 自己 cli class a class got spl_autoload_register(PHP 5 >= 5.1.2) spl_autoload_register — 註冊__autoload()函數 說明bool spl_

php中自動加載類_autoload()和spl_autoload_register()實例詳解

http obj 自動加載 完整 echo register auto 文件名 代碼 一、_autoload 自動加載類:當我們實例化一個未定義的類時,就會觸此函數。到了php7.1以後版本不支持此函數好像拋棄了   新建一個類文件名字自己隨便去:news類在auto.ph

_autoload 自動加載類和spl_autoload_register()函數

obj title 技術分享 .class auto 自己 req tool () 一、_autoload 自動加載類:當我們實例化一個未定義的類時,就會觸此函數。到了php7.1以後版本不支持此函數好像拋棄了   新建一個類文件名字自己隨便去:news類在auto.

詳解spl_autoload_register()函數

執行 再看 對象 gpo 參數 面向對象 使用 實例 來看 在了解這個函數之前先來看另一個函數:__autoload。 一、__autoload 這是一個自動加載函數,在PHP5中,當我們實例化一個未定義的類時,就會觸發此函數。看下面例子: prin

php命名空間+spl_autoload_register實現類的自動加載

direct index.php spl rec esp hello require gist pac 自動加載方法: function my_autoload($name){ $name = str_replace(‘\\‘,DIRECTORY_SEPARATOR,$na

c理解提高(5)字串copy函式技術推演

#include <stdlib.h> #include <string.h> #include <stdio.h> void main01() { //通過棧的方式對資料進行拷貝 char a[] = "i am a student"; char b[6

c理解提高(3)程式的記憶體四區模型和函式呼叫模型

程式的記憶體四區模型 記憶體四區的建立流程 流程說明 1、作業系統把物理硬碟程式碼load到記憶體 2、作業系統把c程式碼分成四個區 3、作業系統找到main函式入口執行   各區元素分析 函式呼叫模型 基本原理

yolo v2 損失函式原始碼解讀

前提說明:     1, 關於 yolo 和 yolo v2 的詳細解釋請移步至如下兩個連結,或者直接看論文(我自己有想寫 yolo 的教程,但思前想後下面兩個連結中的文章質量實在是太好了_(:з」∠)_)         yo

SQL Server 字串函式

 在開發T-SQL時,經常會需要對字串進行各種各樣的操作,下面介紹常用的字串函式。 1、獲取字元的ASCII碼 ASCII     ASCII碼是對字元的標準編碼。要獲取字元的ASCII碼就可以通過呼叫ASCII函式來實現。     語法結構: ASCII(espression)   這裡的e

python中偏函式的應用

一、什麼是偏函式? (1)在Python的functools模組眾多的功能中,其中有一個就是偏函式,我們稱之為 partial function 模組的概念我們下一篇在細講。 (2)我們都聽過偏將軍吧,在三國時代的官制中,系將軍的輔佐,與裨將軍兩者都

C/C++程式設計教訓----函式內靜態類物件初始化非執行緒安全(C++11之前)

不少程式設計師在編寫程式的時候,會使用函式內靜態(static)變數,既能滿足函式內這個變數可以持久的記錄某些資訊,又使其訪問範圍的控制侷限於函式內。但函式內靜態類物件初始化是非執行緒安全的。 問題背景 在我們產品中對log4cxx做了一些簡單的封裝 (採用VS2005編譯),其中會

Python2.7 Print函式

Print函式的各種用法 一、基礎用法 1.print語句可以向螢幕上輸出指定的文字。 例如: print 'Hello World!' 2.print語句也可以跟上多個字串,用逗號“,”隔開,就可以連成一串輸出: ps:print會依次列印每個字串,遇到逗號“,”會

Linux串列埠程式設計詳解 linux串列埠相關設定函式

tcgetattr    函式用於獲取與終端相關的引數。引數fd為終端的檔案描述符,返回的結果儲存在termios 結構體中 http://baike.baidu.com/view/5644808.htm?fr=aladdin tcset

redis 有序集合(zset)函式

redis 有序集合(zset)函式   zAdd 命令/方法/函式 Adds the specified member with a given score to the sorted set stored at key. 增加一個或多個元素,如果該元素已經存在,更新它的socre值