首頁 > 後端開發 > php教程 > 新的 Drupal Hook 屬性

新的 Drupal Hook 屬性

Linda Hamilton
發布: 2024-12-30 01:01:10
原創
175 人瀏覽過

New Drupal Hook attribute

在新版本公告中,有些東西吸引了我的注意。從標題就知道是Hook屬性。
對於不熟悉 php 屬性的人,我不久前寫了一篇關於它的文章。

自從 Drupal 8 轉向物件導向的程式碼結構方式以來,添加鉤子的方式對我來說很礙眼。
使用模組名稱作為函數前綴並使用 .module 檔案添加所有函數對我來說有一種非常意大利麵條程式碼的感覺。

現在他們幾乎修復了它。幾乎是因為有一堆仍然是程序性的鉤子。計劃是刪除 Drupal 12 中的程式掛鉤,因此在下一個 Drupal 小版本中,我們將看到這些掛鉤消失。

有什麼好處?

掛鉤不是將函數加入 .module 檔案中,而是位於模組的 src 目錄中。
我建議使用 Hooks 子目錄以便於識別。或在類別名稱中加上 Hooks 字尾

因為它是一個屬性,所以您可以將多個鉤子綁定到同一個方法。

對於維護 11.1 之前的 Drupal 版本模組的人來說,有一個額外的屬性,LegacyHook。這允許您將鉤子的程式碼移動到具有鉤子屬性的類別中。舊版的Drupal會執行.module檔案中的函數,但新版本只會執行類別方法。

如何使用 Hook 屬性

正如您從前面的程式碼範例中看到的,屬性已新增到方法中。

但是您也可以將方法加入類別。

正如我在範例中所示,我建議讓類別名稱更具描述性。並使用後綴 Hook 而不是 Hooks。

可以為類別新增Hook屬性,並將方法新增為第二個參數。我不建議這樣做,在這種情況下,將屬性新增到方法中會更乾淨。

還有第三個 Hook 參數,module。這允許您從另一個模組執行鉤子類別。例如#hook('comment_insert', 'commentInsert', 'my_comment_module')。
我一直在考慮這個的用例,但我找不到任何用例。
如果你知道的話請告訴我。

結論

我喜歡看到 Drupal 程式碼朝著正確的方向發展。

令我困擾的一件事是鉤子是魔法常數。但計劃是所有的 hooks 屬性都以 Hook 屬性為基底類別。因此,#[Hook('comment_insert')] 將會是 #[CommentInsert]。
他們可以做到這一點的另一種方法是使用枚舉,並按模組分組。

這篇文章中的資訊是基於文件和我對實現的快速了解。當我測試了該功能後,將會發布更新或附加帖子。

以上是新的 Drupal Hook 屬性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板