Symfony-バンドル

Symfonyバンドルは、特定の構造で編成されたファイルとフォルダーのコレクションです。バンドルは、複数のアプリケーションで再利用できるようにモデル化されています。メインアプリケーション自体はバンドルとしてパッケージ化されており、一般的にはAppBundle

バンドルは、AdminBundle(管理セクション)、BlogBu​​ndle(サイトのブログ)などのアプリケーションに固有にパッケージ化される場合があります。このようなバンドルは、アプリケーション間で共有できません。代わりに、ブログなどのアプリケーションの特定の部分を汎用バンドルとしてモデル化できるため、バンドルをあるアプリケーションから別のアプリケーションにコピーするだけで、ブログの機能を再利用できます。

バンドルの構造

バンドルの基本構造は次のとおりです。

  • Controller −すべてのコントローラーをここに配置する必要があります。

  • DependencyInjection −依存性注入に関連するすべてのコードと構成をここに配置する必要があります。

  • Resources/config −バンドル関連の構成はここに配置されます。

  • Resources/view −バンドル関連のビューテンプレートはここに配置されます。

  • Resources/public −バンドル関連のスタイルシート、JavaScript、画像などがここに配置されます。

  • Tests −バンドル関連の単体テストファイルはここに配置されます。

バンドルの作成

簡単なバンドルを作成しましょう。 TutorialspointDemoBundle 私たちの中で HelloWorld 応用。

Step 1−名前空間を選択します。バンドルの名前空間には、ベンダー名とバンドル名を含める必要があります。私たちの場合、それはTutorialspoint\DemoBundle

Step 2 −空のクラスを作成します。 TutorialspointDemoBundle 拡張することによって Bundle クラスとそれを下に置きます src/Tutorialspoint/DemoBundle

namespace Tutorialspoint\DemoBundle; 
use Symfony\Component\HttpKernel\Bundle\Bundle;  

class TutorialspointDemoBundle extends Bundle { 
}

Step 3 −アプリケーションでサポートされているバンドルのリストにクラスを登録します。 AppKernel クラス。

public function registerBundles() { 
   $bundles = array( 
      // ... 
      // register your bundle 
      new Tutorialspoint\DemoBundle\TutorialspointDemoBundle(), 
   ); 
   return $bundles; 
}

これはすべて、空のバンドルを作成するために必要であり、他のすべての概念はアプリケーションの概念と同じです。symfonyはコンソールコマンドも提供しますgenerate:bundle 次のように、新しいバンドルを作成するプロセスを簡素化します。

php bin/console generate:bundle --namespace = Tutorialspoint/DemoBundle

結果

Welcome to the Symfony bundle generator!

Are you planning on sharing this bundle across multiple applications? [no]: no  

Your application code must be written in bundles. This command helps 
you generate them easily.  

Give your bundle a descriptive name, like BlogBundle. 
Bundle name [Tutorialspoint/DemoBundle]:   

In your code, a bundle is often referenced by its name. It can be the 
concatenation of all namespace parts but it's really up to you to come 
up with a unique name (a good practice is to start with the vendor name). 
Based on the namespace, we suggest TutorialspointDemoBundle.  

Bundle name [TutorialspointDemoBundle]:  
Bundles are usually generated into the src/ directory. Unless you're 
doing something custom, hit enter to keep this default!
Target Directory [src/]:   

What format do you want to use for your generated configuration?  

Configuration format (annotation, yml, xml, php) [annotation]:

Bundle generation

> Generating a sample bundle skeleton into app/../src/Tutorialspoint/DemoBundle 
   created ./app/../src/Tutorialspoint/DemoBundle/ 
   created ./app/../src/Tutorialspoint/DemoBundle/TutorialspointDemoBundle.php 
   created ./app/../src/Tutorialspoint/DemoBundle/Controller/ 
   created ./app/../src/Tutorialspoint/DemoBundle/Controller/DefaultController.php 
   created ./app/../tests/TutorialspointDemoBundle/Controller/   
   created ./app/../tests/TutorialspointDemoBundle/Controller/DefaultControllerTest.php 
   created ./app/../src/Tutorialspoint/DemoBundle/Resources/views/Default/   
   created ./app/../src/Tutorialspoint/DemoBundle/Resources/views/Default/index.html.twig 
   created ./app/../src/Tutorialspoint/DemoBundle/Resources/config/ 
   created ./app/../src/Tutorialspoint/DemoBundle/Resources/config/services.yml 
> Checking that the bundle is autoloaded 
> Enabling the bundle inside app/AppKernel.php 
   updated ./app/AppKernel.php 
> Importing the bundle's routes from the app/config/routing.yml file 
   updated ./app/config/routing.yml 
> Importing the bundle's services.yml from the app/config/config.yml file 
   updated ./app/config/config.yml 
Everything is OK! Now get to work :).