Re: [請益] 關於autoload
: 想請問使用autoload把所有的class都自動加載進來,使用上非常方便,
: 但是這樣如果我這支程式只會使用到某一個class,但是實際上是全部都加載了。
我是沒聽過 autoload 有一次把所有 class 全部載入的功能
反倒是用到的時候才載入
假設我有個 library 放在 lib/Hello.php
內容如下:
<?php
echo 'class loaded'; // 檔案一被載入就會印出字串
class Hello {}
然後我們先用 require 的方式來載入 library 看看會怎樣
<?php
require __DIR__ . '/lib/Hello.php'; // 顯示 'class loaded'
// 做點別的事
$a = 1 + 2 + 3;
$o = new Hello();
在 require 那一行就會看到 Hello.php 已經被讀取並執行到 echo 那行
再來改用 spl_autoload_register() 來實作 autoload 規則:
<?php
spl_autoload_register(function($className) {
require __DIR__ . '/lib/' . $className . '.php';
});
// 在 new Hello() 之前作點別的事
$a = 1 + 2 + 3;
$o = new Hello(); // 顯示 'class loaded'
如果使用 autoload 的話
PHP 不會一次把所有的檔案都載入
而是在需要使用的時候去檢查檔案是否已經載入
沒有的話再去載入
也就是為什麼第二個範例使用 autoload 的時候
會在 new 那行才看到 'class loaded'
不知道是不是你要的答案
希望有幫上忙
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.151.21
※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1516978268.A.361.html
→
01/27 00:03,
6年前
, 1F
01/27 00:03, 1F
→
01/27 00:03,
6年前
, 2F
01/27 00:03, 2F
→
01/27 09:18,
6年前
, 3F
01/27 09:18, 3F
→
01/27 09:19,
6年前
, 4F
01/27 09:19, 4F
→
01/27 09:19,
6年前
, 5F
01/27 09:19, 5F
→
01/27 09:19,
6年前
, 6F
01/27 09:19, 6F
→
01/27 12:46,
6年前
, 7F
01/27 12:46, 7F
→
01/27 12:46,
6年前
, 8F
01/27 12:46, 8F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章