[wordpress] implement autoloader with wordpress plugin

自幹autoloader一波

林罡北
1 min readJan 21, 2018

身為一個php developer,負責開發wordpress plugin是很正常的事情
而開發時程很緊迫也是很正常的事情…唉
由於時程問題,還沒來得及研究怎麼把composer跟wordpress做結合,又不想寫一堆垃圾require/include code,只好先自幹autoloader擋一下QQ

就讓我筆記一下這次的東西吧

來,你一定要問什麼是autoloader

不要問我為什麼標題是Composer,看完這篇文章你就知道了

這句話根本精髓啊,autoloader就是一個函式

當你要使用的類別PHP找不到時,它會將類別名稱當成字串丟進這個函式,在PHP噴error投降之前,做最後的嘗試

簡單來說就是PHP垂死的掙扎啊,不行我就死給你看

為什麼不能跟Java/Js一樣乖乖import就好啊QQ
開發wordpress plugin超容易因為這種東西直接500的…

有興趣的也可以看看官方的文件

plugin檔案結構

首先,我假設開發的plugin名稱叫做northbei(好啦這是我帳號)
由於我是使用DevinVinson的WordPress Plugin Boilerplate

所以基本的plugin的資料夾結構如下

C:.
│ CHANGELOG.md
│ README.md

└─northbei
│ index.php
│ LICENSE.txt
│ northbei.php
│ README.txt
│ uninstall.php

├─admin
│ │ class-northbei-admin.php
│ │ index.php
│ │
│ ├─css
│ │ northbei-admin.css
│ │
│ ├─js
│ │ northbei-admin.js
│ │
│ └─partials
│ northbei-admin-display.php

├─includes
│ class-northbei-activator.php
│ class-northbei-deactivator.php
│ class-northbei-i18n.php
│ class-northbei-loader.php
│ class-northbei.php
│ index.php

├─languages
│ northbei.pot

└─public
│ class-northbei-public.php
│ index.php

├─css
│ northbei-public.css

├─js
│ northbei-public.js

└─partials
northbei-public-display.php

plugin php file/class配置規則

基本上autoloader就是給你一個class name,你要自己想辦法找出這個class name對應到哪個php file,然後include/require該php file,所以基本上有一定的規則會比較好寫程式,不然會超多if-else的

配置規則如下

  • 所有要被include/require的class都放在includes資料夾底下
  • includes資料夾底下的每個php檔案都是一個class,也只能有一個class
  • 每一個class名稱都以NB_開頭,後面各單字使用駝峰式命名,並且使用底線連接
  • includes資料夾底下的每個php檔案名稱都以class-northbei-開頭,後面命名為class名稱NB_後英文的小寫,並且將_改以-表示

所以我們的autoloader基本上要做下面這樣的class名稱對應,當然,怎麼對應會因為每個人的檔案/類別配置規則不同而不同

NB_Abc -> includes/class-northbei-abc.phpNB_Test_Abc -> includes/class-northbei-test-abc.php

autoloader code~

打完收工囉!!
有了autoloader就不需要在其他的php file中瘋狂打require囉~
但是還是應該花一點時間去搞定用Composer管理wordpress,畢竟自動化才是王道啊

--

--

林罡北
林罡北

Written by 林罡北

Founder of TroublesLab, F2E & Web/App Developer

No responses yet