Re: [請益] 關於autoload

看板PHP作者 (Zero 日落)時間7年前 (2018/01/26 22:51), 編輯推噓0(008)
留言8則, 2人參與, 7年前最新討論串2/3 (看更多)
: 想請問使用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, 7年前 , 1F
這樣說是沒錯,只是想說php自己一定會先掃過,他才知道有
01/27 00:03, 1F

01/27 00:03, 7年前 , 2F
哪些東西
01/27 00:03, 2F

01/27 09:18, 7年前 , 3F
PHP 會掃,不過是按照指定的方式找檔案
01/27 09:18, 3F

01/27 09:19, 7年前 , 4F
像是檔案存放路徑規範是 PSR-4
01/27 09:19, 4F

01/27 09:19, 7年前 , 5F
但我上面的範例沒有按照 PSR-4,而是把 class 檔都放在
01/27 09:19, 5F

01/27 09:19, 7年前 , 6F
lib/ 目錄下面
01/27 09:19, 6F

01/27 12:46, 7年前 , 7F
了解了,另外請問有工具可以直接看到我的namespace的結構
01/27 12:46, 7F

01/27 12:46, 7年前 , 8F
01/27 12:46, 8F
文章代碼(AID): #1QQq1SDX (PHP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1QQq1SDX (PHP)