看板 PHP 關於我們 聯絡資訊
: 想請問使用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
wuwt4y: 這樣說是沒錯,只是想說php自己一定會先掃過,他才知道有 01/27 00:03
wuwt4y: 哪些東西 01/27 00:03
JohnRoyer: PHP 會掃,不過是按照指定的方式找檔案 01/27 09:18
JohnRoyer: 像是檔案存放路徑規範是 PSR-4 01/27 09:19
JohnRoyer: 但我上面的範例沒有按照 PSR-4,而是把 class 檔都放在 01/27 09:19
JohnRoyer: lib/ 目錄下面 01/27 09:19
wuwt4y: 了解了,另外請問有工具可以直接看到我的namespace的結構 01/27 12:46
wuwt4y: 嗎 01/27 12:46