iT邦幫忙

0

自建了 php autoload ,但無法同時使用 composer 的 autoload,應該怎樣好?(Fixed)

不知道大家有沒有看過下面的 php autoload 教學?

Eric G. Huang 不像樣工程師
PHP系列 - Autoload 自動載入
http://justericgg.logdown.com/posts/196891-php-series-autoload

跟據這個教學,我解決了很多 class include require 檔案引入的困難,而且用了很長時間。

過去,自己很小用composer,最近因為要使用 Google Calendar API,就必須要使用了。

因為,自己的程式碼,全都是用 Object Class 來編寫,所以,autoload變成很重要。

說實話,自己對php autoload 還是一知半解。

但這一次,就面對上,若用自己寫的 autoload,就無法用 composer 的autoload了。

現在方向迷失,有沒有那一位大大,可以指點一下?

有一個想法,不知道是否對還是不對:
Composer 有為個人自建自己的 autoload 規範,並且統一全局 autoload標準?若真的是這樣,有沒有一些入門方法?

因為,在迷失中,問題應該問得不好,請指教一下。


補充:
為了不要浪費大大的建言,在下面提供一些參考資料,讓大家可以分享。

Composer Basic usage: autoloading
https://getcomposer.org/doc/01-basic-usage.md#autoloading

PHP PSR-4 Autoloader 機制
http://blog.tonycube.com/2016/09/php-psr-4-autoloader.html

什麼是 PHP Standards Recommendations(PSR)(PHP標準建議)?
https://www.php-fig.org/psr/


Fixed

運用Composer Autoloader

  1. 準備自建的 namespace 和 目錄位置
e.g. 
namespace1 = application\control\, 目錄位置 = {user_directory}/application/control
namespace2 = application\module\, 目錄位置 = {user_directory}/application/module
namespace3 = application\mouule\sql\, 目錄位置 =  {user_directory}/application/module/sql
  1. 在 composer.json 加入自建的 namespace 和 目錄位置
{
    "autoload": {
        "psr-4": {
            "application\\control\\": "application/control/",
            "application\\module\\": "application/module/",
            "application\\module\\sql\\": "application/module/sql/"
        }
    }
}
  1. 進入 console mode,使用用戶權限及用戶的root目錄,執行下面的程式
composer dump-autoload
  1. 在需要的php 程式中,頂部加入(因為我的 composer 是放在 /vendor中,請自行改進)
require __DIR__ . '/vendor/autoload.php';

結果測試操作正常。詳情請參考
PHP PSR-4 Autoloader 機制
http://blog.tonycube.com/2016/09/php-psr-4-autoloader.html
Composer Basic usage: autoloading
https://getcomposer.org/doc/01-basic-usage.md#autoloading

看更多先前的討論...收起先前的討論...
fillano iT邦超人 1 級 ‧ 2020-07-08 07:26:57 檢舉
https://getcomposer.org/doc/01-basic-usage.md#autoloading 文件先看一下
Han iT邦研究生 1 級 ‧ 2020-07-08 09:57:06 檢舉
autoload個人和composer的都可以同時引入
謝謝兩位,我先看一看文件。
看來要對 PHP PSR-4 Autoloader 機制 認真學習一下
http://blog.tonycube.com/2016/09/php-psr-4-autoloader.html
謝謝 fillano 和 Han
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答