2011-11-08 17 views
1

這是場景(它有點特定,但仍然足以適用於任何PHP lib):什麼是一些實用的PHP命名空間解決方案?

WordPress 3.2.1或更早版本(PHP代碼庫,PHP5 w /和w/o名稱間距可用)...我創建了一個帶有幾個類名(WPAlchemy_MetaBox,WPAlchemy_MediaAccess)的小型PHP庫...開發人員已經開始使用WordPress可以安裝許多插件/主題的類(在相同的環境中),所以使用庫的兩個或多個插件的可能性很可能(碰撞可能與類名顯然發生)

我目前認爲每個版本可能有一個唯一的類名(與版本號或其他)...我可以用這個抽象一點一種簡單的加載器(爲簡單起見)。

我想獲得一些最佳實踐來解決上述問題。

  • 避免名稱衝突
  • 允許如果需要

如果有解決這個請讓我知道,還請隨時改寫這個問題其他SO崗位開發人員使用特定版本還有額外的重點目標。

回答

0

爲防止碰撞,請使用自動裝載器(請參閱spl_autoload_register)。因此,如果您共享庫並且每個共享者使用自動加載器,那麼類名稱collision(redeclare class致命錯誤)不會再發生。

這並不解決問題的版本(例如有來自同一家庭的不同類別,但不同的版本)。

一個簡單的解決(與autloader相結合)是所提供的庫作爲插件。每次庫更新時,都要更新插件。該插件只提供自動加載器和類。

希望利用圖書館的

其他插件,必須使你的庫插件的依賴,如檢查它並告訴用戶安裝它,如果它不可用或只是自動安裝它。

如果你提供一個樣本插件,做這行的演示(SDK),我想很多用戶會採用的庫。

相關問題