Symfony-バンドル
Symfonyバンドルは、特定の構造で編成されたファイルとフォルダーのコレクションです。バンドルは、複数のアプリケーションで再利用できるようにモデル化されています。メインアプリケーション自体はバンドルとしてパッケージ化されており、一般的にはAppBundle。
バンドルは、AdminBundle(管理セクション)、BlogBundle(サイトのブログ)などのアプリケーションに固有にパッケージ化される場合があります。このようなバンドルは、アプリケーション間で共有できません。代わりに、ブログなどのアプリケーションの特定の部分を汎用バンドルとしてモデル化できるため、バンドルをあるアプリケーションから別のアプリケーションにコピーするだけで、ブログの機能を再利用できます。
バンドルの構造
バンドルの基本構造は次のとおりです。
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 :).