symfonyはアプリケーションのプラグインの個々のセットをダウンロードします

こんにちは、%ユーザー名%。

すでに繰り返し、symfonyフレームワークで何かを開発しているときに、プロジェクト内であるアプリケーションのプラグインを別のアプリケーションのプラグインから分離する問題に出くわします。 ただし、これは、バックエンドアプリケーションのプラグインがフロントエンドアプリケーションに読み込まれないと言うために必要です。 言うのは難しいですが、一般的には何もありません。 私が見つけた最も簡単な方法は、例としてbackendConfigurationクラスのsetupメソッドをオーバーライドすることです。

次のようになります。
Copy Source | Copy HTML <?php class backendConfiguration extends sfApplicationConfiguration { public function setup() { // } public function configure() { } }
  1. Copy Source | Copy HTML <?php class backendConfiguration extends sfApplicationConfiguration { public function setup() { // } public function configure() { } }
  2. Copy Source | Copy HTML <?php class backendConfiguration extends sfApplicationConfiguration { public function setup() { // } public function configure() { } }
  3. Copy Source | Copy HTML <?php class backendConfiguration extends sfApplicationConfiguration { public function setup() { // } public function configure() { } }
  4. Copy Source | Copy HTML <?php class backendConfiguration extends sfApplicationConfiguration { public function setup() { // } public function configure() { } }
  5. Copy Source | Copy HTML <?php class backendConfiguration extends sfApplicationConfiguration { public function setup() { // } public function configure() { } }
  6. Copy Source | Copy HTML <?php class backendConfiguration extends sfApplicationConfiguration { public function setup() { // } public function configure() { } }
  7. Copy Source | Copy HTML <?php class backendConfiguration extends sfApplicationConfiguration { public function setup() { // } public function configure() { } }
  8. Copy Source | Copy HTML <?php class backendConfiguration extends sfApplicationConfiguration { public function setup() { // } public function configure() { } }
  9. Copy Source | Copy HTML <?php class backendConfiguration extends sfApplicationConfiguration { public function setup() { // } public function configure() { } }
  10. Copy Source | Copy HTML <?php class backendConfiguration extends sfApplicationConfiguration { public function setup() { // } public function configure() { } }
  11. Copy Source | Copy HTML <?php class backendConfiguration extends sfApplicationConfiguration { public function setup() { // } public function configure() { } }

この方法を使用すると、アプリケーションごとにプラグインの独立した構成を取得できますが、最終的には3つの異なるファイルのプラグインを監視する必要があることがわかります。 また、2つのアプリケーション(フロントエンド、バックエンド)があり、projectConfigurationでのみ表示されるcliを忘れないため、3つのファイルを取得します。 つまり たとえば、バックエンドで記述したプラグインのいずれかがコンソールで機能する場合、projectConfigurationに登録する必要があります。そうしないと機能しません。

一方で、非常に便利なので、共通の構成に合わせる必要がなくてもプロジェクト間で転送できる分離されたアプリケーションを作成できますが、プロジェクト全体を実行する場合、そのような転送を意味しません(たぶん私はそんなに怠け者ではないでしょう)。

一般的に、ためらうことなく、projectConfigurationのみを使用してsymfonyフレームワークのロードプラグインの独自バージョンを作成することにしました。
Copy Source | Copy HTML
  1. <?php
  2. require_once '/usr/share/php/symfony/autoload/sfCoreAutoload.class.php' ;
  3. sfCoreAutoload :: register();
  4. クラス ProjectConfiguration sfProjectConfigurationを拡張します
  5. {
  6. パブリック関数のセットアップ()
  7. {
  8. $ sfApplicationExists = sfConfig :: get( 'sf_app'false );
  9. iffalse === $ sfApplicationExists
  10. {
  11. $ this-> enableAllPluginsExcept( 'sfPropelPlugin' );
  12. }
  13. 他に
  14. {
  15. //すべてのアプリケーションに共通のプラグイン
  16. $ sfCommonPluginsArray = array'sfDoctrinePlugin' );
  17. if$ sfApplicationExists == 'backend'
  18. {
  19. $ sfCustomPluginsArray = array
  20. //バックエンドアプリケーションのプラグイン
  21. );
  22. }
  23. 他に
  24. {
  25. $ sfCustomPluginsArray = array
  26. //フロントエンドアプリケーションのプラグイン
  27. );
  28. }
  29. $ this-> enablePlugins(array_merge( $ sfCommonPluginsArray$ sfCustomPluginsArray ));
  30. }
  31. }
  32. }


この方法は完璧な解決策ではありませんが、この問題と別の方法で解決する方法についてのあなたの意見を聞くことは非常に興味深いです。

PS批判なしに成長はありません。

Source: https://habr.com/ru/post/J89757/


All Articles