> drupal 8:從鉤子到Symfony的事件調度程序的過渡 Drupal 8對眾多符號組件的採用表示從傳統的Drupal方法論轉向當代PHP建築模式。 該過渡涉及逐漸用插件,註釋和功能強大的Symfony事件調度程序替換掛鉤系統。
Symfony事件調度程序使應用程序組件能夠通過調度和處理事件進行交互,提供比程序掛鉤系統更靈活,更脫鉤的擴展機制。 Drupal 8通過使用聆聽特定事件的事件訂戶類來利用這一點。 這些類實現
方法,返回了他們訂閱的一系列事件。
EventSubscriberInterface
> hooks在Drupal 8中持續存在,但它們的用法已減少,因為許多人已被插件,註釋和事件調度程序所取代。 但是,鉤子對於某些核心相互作用仍然至關重要。 該建議是在可行的情況下偏愛Symfony事件調度員,因為其靈活性和功能增強了,包括聽眾的優先級,停止事件傳播和修改事件數據。 (注意:原始文章中的代碼示例可能需要由於正在進行的Drupal 8開發而需要更新。
getSubscribedEvents
了解事件調度程序
一個實踐的例子:
模塊此示例在自定義Drupal 8模塊(
)中演示了事件調度程序。該模塊包括帶有兩個字段的配置表格。 保存後,派遣包含配置對象的事件,允許其他組件在持久性之前攔截和修改。 最後,事件訂閱者證明了聆聽和對此事件的反應。 (對於Drupal 8模塊開發基礎知識,請諮詢相關教程。)
>表格(event_dispatcher_demo
)
>創建了一個簡單的配置表格,其中有兩個文本字段(event_dispatcher_demo
和
)允許通過URL訪問(例如,DemoForm.php
)。
) )簡單地保存配置對象並提供getter/setter方法。
登錄 的方法,以使用 掛鉤。示例掛鉤實現( >原始文章的FAQ部分已經結構良好,並且全面回答了有關Drupal 8 Hooks和Symfony事件調度員的差異和用法的常見問題。 這裡不需要更改。 my_name
my_website
表格的提交處理程序(event_dispatcher_demo.routing.yml
)現在包括:
class($dispatcher = Drupal::service('event_dispatcher');
(在生產代碼中首選依賴項注入)。 DemoEvent
>對象(自定義事件類擴展Symfony'sEvent
類)並傳遞配置對象。
$dispatcher->dispatch('demo_form.save', $e);
>
DemoEvent
DemoEvent.php
事件訂閱者(ConfigSubscriber.php
這個類實現EventSubscriberInterface
>聆聽getSubscribedEvents
事件的方法。 onConfigSave
>基於現有的配置值添加了一個新的配置值。 帶有demo_form.save
標籤的服務定義(onConfigSave
)註冊此訂閱者。 event_dispatcher_demo.services.yml
> drupal 8 event_subscriber
中的鉤子
submitForm
)演示了添加配置值。 demo_config_save
結論module_handler
與傳統的掛鉤系統相比,Symfony事件調度程序為擴展Drupal 8功能提供了一種更強大和可維護的方法。雖然掛鉤仍然存在,但事件調度程序是推薦的新開發方法,提供了更好的靈活性,可檢驗性和代碼組織。 這種轉變反映了Drupal對現代PHP的最佳實踐的採用。
event_dispatcher_demo.module
常見問題(常見問題解答)
以上是Drupal 8鉤和Symfony活動調度員的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在PHP中,可以使用session_status()或session_id()來檢查會話是否已啟動。 1)使用session_status()函數,如果返回PHP_SESSION_ACTIVE,則會話已啟動。 2)使用session_id()函數,如果返回非空字符串,則會話已啟動。這兩種方法都能有效地檢查會話狀態,選擇使用哪種方法取決於PHP版本和個人偏好。

sessionsarevitalinwebapplications,尤其是在commercePlatform之前。

在PHP中管理並發會話訪問可以通過以下方法:1.使用數據庫存儲會話數據,2.採用Redis或Memcached,3.實施會話鎖定策略。這些方法有助於確保數據一致性和提高並發性能。

PHPsessionshaveseverallimitations:1)Storageconstraintscanleadtoperformanceissues;2)Securityvulnerabilitieslikesessionfixationattacksexist;3)Scalabilityischallengingduetoserver-specificstorage;4)Sessionexpirationmanagementcanbeproblematic;5)Datapersis

負載均衡會影響會話管理,但可以通過會話複製、會話粘性和集中式會話存儲解決。 1.會話複製在服務器間複製會話數據。 2.會話粘性將用戶請求定向到同一服務器。 3.集中式會話存儲使用獨立服務器如Redis存儲會話數據,確保數據共享。

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

PHP會話的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。 1.Cookies通過在客戶端存儲數據來管理會話,簡單但安全性低。 2.Token-basedAuthentication使用令牌驗證用戶,安全性高但需額外邏輯。 3.Database-basedSessions將數據存儲在數據庫中,擴展性好但可能影響性能。 4.Redis/Memcached使用分佈式緩存提高性能和擴展性,但需額外配

Sessionhijacking是指攻擊者通過獲取用戶的sessionID來冒充用戶。防範方法包括:1)使用HTTPS加密通信;2)驗證sessionID的來源;3)使用安全的sessionID生成算法;4)定期更新sessionID。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。