一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP 自動加載類原理與用法實例分析

PHP 自動加載類原理與用法實例分析

2021-10-08 14:53Ryan_zheng PHP教程

這篇文章主要介紹了PHP 自動加載類原理與用法,結合具體實例形式分析了PHP 自動加載類基本概念、原理、使用方法及操作注意事項,需要的朋友可以參考下

本文實例講述了PHP 自動加載類原理與用法。分享給大家供大家參考,具體如下:

類的自動加載 (Autoloading Classes)

在編寫面向對象(OOP) 程序時,很多開發者為每個類新建一個 PHP 文件。 這會帶來一個煩惱:每個腳本的開頭,都需要包含(include)一個長長的列表(每個類都有個文件)。

在 PHP 5 中,已經不再需要這樣了。 spl_autoload_register() 函數可以注冊任意數量的自動加載器,當使用尚未被定義的類(class)和接口(interface)時自動去加載。通過注冊自動加載器,腳本引擎在 PHP 出錯失敗前有了最后一個機會加載所需的類。

Tip

盡管 __autoload() 函數也能自動加載類和接口,但更建議使用 spl_autoload_register() 函數。spl_autoload_register() 提供了一種更加靈活的方式來實現類的自動加載(同一個應用中,可以支持任意數量的加載器,比如第三方庫中的)。因此,不再建議使用 __autoload() 函數,在以后的版本中它可能被棄用。

Note:

在 PHP 5.3 之前,__autoload 函數拋出的異常不能被 catch 語句塊捕獲并會導致一個致命錯誤(Fatal Error)。 自 PHP 5.3 起,能夠 thrown 自定義的異常(Exception),隨后自定義異常類即可使用。 __autoload 函數可以遞歸的自動加載自定義異常類。

Note:

自動加載不可用于 PHP 的 CLI 交互模式。

Note:

如果類名比如被用于 call_user_func(),則它可能包含一些危險的字符,比如 ../。 建議您在這樣的函數中不要使用用戶的輸入,起碼需要在 __autoload() 時驗證下輸入。

自動加載示例

ClassInterface.php

?
1
2
3
4
5
<?php
interface ClassInterface {
  public function print();
  public function get_current_time();
}

MyClass1.php

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
class MyClass1 implements ClassInterface
{
  public $flag = 'MyClass1';
 
  public function print() {
    echo $this->flag;
  }
 
  public function get_current_time() {
    echo $this->flag . " : " . date("Y-m-d H:i:s",time());
  }
  
}

MyClass2.php

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
class MyClass2 implements ClassInterface
{
  public $flag = 'MyClass2';
 
  public function print() {
    echo "MyClass2";
  }
 
  public function get_current_time() {
    echo $this->flag . " : " . date("Y-m-d H:i:s",time());
  }
  
}

autoload.php

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
date_default_timezone_set('Asia/Shanghai');
spl_autoload_register(function ($class_name) {
  require_once $class_name . '.php';
});
 
$obj = new MyClass1();
$obj2 = new MyClass2();
$obj->print();
echo "<br>";
$obj->get_current_time();
echo "<br>";
$obj2->print();
echo "<br>";
$obj2->get_current_time();

 輸出結果:

PHP 自動加載類原理與用法實例分析

希望本文所述對大家PHP程序設計有所幫助。

原文鏈接:https://www.cnblogs.com/ryanzheng/p/11405142.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色综合合久久天天综合绕视看 | 免费jizz在在线播放国产 | 性xx色3d动画xx无尽 | 色老妈 | 国产福利一区二区三区 | 日本一区二区精品88 | 男女小视频在线观看 | 国产精品视频久久久久 | 久久综合色超碰人人 | 免费黄色片在线观看 | 四虎影视地址 | 国产一级在线观看 | 亚洲精品国产SUV | 午夜国产精品影院在线观看 | 日本人泡妞18xxⅹ | 青苹果乐园影院在线播放 | 日本加勒比在线精品视频 | 荡娃艳妇有声小说 | 国产探花视频在线观看 | 日本护士xxxx爽爽爽 | 门房秦大爷在线阅读 | 女暴露狂校园裸露小说 | 国产在视频线精品视频 | 亚洲一区二区福利视频 | 久久精品国产只有精品 | 亚洲国产精品无圣光一区二区 | 日本免费一区二区三区a区 日本免费三片在线观看 | 国产露脸对白刺激3p在线 | 99久久免费国产特黄 | 亚洲欧美日韩精品高清 | 久久热在线视频精品1 | 妇乱子伦激情 | boobsmilking流奶水 | nxgx在线观看国产中文 | 欧美国产高清 | 丝瓜视频黄色在线观看 | 久久国产热视频99rev6 | 图片专区小说专区卡通动漫 | 女仆掀起蕾丝裙被打屁股作文 | 欧美日韩一区二区三区免费 | 天天快乐在线观看 |