[wordpress] implement autoloader with wordpress plugin
身為一個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,畢竟自動化才是王道啊