phpフレームワークsymfony学習.(2)Bundle
2462 ワード
Symfony Bundles
bundleは他のソフトウェアのプラグインに似ていますが、より良いです.
重要な違いは、Symfonyのすべてのものがbundleであり、フレームワークのコア機能や、あなたが作成したプログラムコードが含まれています.
1つのbundleはプラグインとして理解できますが、プラグインより使いやすいです.私たちが書いた内容は一つ一つbundle(束)に分割することができます.
Symfonyは自動的にAPPBundleを生成し、コントローラControllerテストファイルTests、AppBundleを含む.phpは識別の役割を果たし、bundleであることを示しています.
.
Bundleを継承します.Symfony\Component\HttpKernel\Bundle\Bundle
新しいBundleを作成すると、プログラム登録時にBundleクラスがインスタンス化されます.それぞれのBundleは異なる機能を実現することができます.
あなたのプログラムでbundleを使用するには、
例えばブログを書くと、自分のコントローラ、ビュー、クラスライブラリファイルなどの機能セットを含むBlogBundleを作成することができます.そして他のBundleに呼び出されます!
コントローラ(コントローラ)
すべてのコントローラはSymfonyBundleFrameworkBundleControllerControllerというクラスを継承します
クラス内の各メソッドに対してrequestリクエストを受信し、responseオブジェクトを返します.
ブラウザがサーバにアクセスするとRequestクラスのインスタンスが生成され、私たちの応答はResponseクラスのインスタンスを作成することができます.
ルート/*Route("/",name="homepage")*/をコメントで定義する
このコメントは、/にアクセスすると、このアクションを呼び出すルーティングを指定します.indexActionのコードは応答を返します.
//annotationでルーティングの方法を定義します.またymlやxmlなども使えます.
応答クラスはSymfonyComponentHttpFoundationResponseをインポートする必要があります
ルーティングでパラメータ/*@Route("/hello/{name}/{sex},name="hellopage")*/
urlで/スラッシュで分ける
パラメータにもルーティングの名前と一致する必要があります
この値伝達方式は便利であるが,問題もあり,すべてのルーティングがここに伝達される.
Routeにカスタム伝達パラメータのタイプを追加できます
requirementsは、遵守する定義ルールが正則で制約されていることを示します.
php app/console debug:routerを使用して、現在定義されているすべてのルーティングを表示します.
同じルーティングの異なる動作に対しては、常に1つだけを取ります.後続は有効ではありません!
Bundleの作成
自分のBundleを作ってmyBundle
作成方法:php app/console generate:bundleオプション-namespace-format
ヒントに従って一歩一歩操作する
プロファイルのフォーマットはyamlを推奨します
ルートディレクトリの下にsrcディレクトリが1つ増えたフォルダは、さっき作成したBundleの名前です.
myBundle:Controllerに格納されているのはコントローラファイル名xxxControllerです.php
DependencyInJectionには依存項目(クラスライブラリ)が格納されています.
Resourceに格納されているリソース、プロファイル、ビュー、ルーティング情報など
Testsが保存したテストに関するファイル
myBundle.phpはphpのクラスであり、このBundleの多くのファイルの代表として理解できる.
もちろんサードパーティのBundleも使えます
yaml形式のルーティング、接尾辞名.yml
経路はResources/config/routing.yml
コントローラレンダリングビューアクセスルーティングコントローラレンダリングテンプレートを表示
yaml形式のルーティングは簡単で、一般的には注釈スタイルのルーティングほど便利ではありませんが、より統一的な感じがします.
Bundleで使用するルーティングタイプはrouting.ymlで表示します.
bundleは他のソフトウェアのプラグインに似ていますが、より良いです.
重要な違いは、Symfonyのすべてのものがbundleであり、フレームワークのコア機能や、あなたが作成したプログラムコードが含まれています.
1つのbundleはプラグインとして理解できますが、プラグインより使いやすいです.私たちが書いた内容は一つ一つbundle(束)に分割することができます.
Symfonyは自動的にAPPBundleを生成し、コントローラControllerテストファイルTests、AppBundleを含む.phpは識別の役割を果たし、bundleであることを示しています.
.
Bundleを継承します.Symfony\Component\HttpKernel\Bundle\Bundle
新しいBundleを作成すると、プログラム登録時にBundleクラスがインスタンス化されます.それぞれのBundleは異なる機能を実現することができます.
あなたのプログラムでbundleを使用するには、
AppKernel
クラスのregisterBundles()
メソッドで登録して使用する必要があります.例えばブログを書くと、自分のコントローラ、ビュー、クラスライブラリファイルなどの機能セットを含むBlogBundleを作成することができます.そして他のBundleに呼び出されます!
コントローラ(コントローラ)
すべてのコントローラはSymfonyBundleFrameworkBundleControllerControllerというクラスを継承します
クラス内の各メソッドに対してrequestリクエストを受信し、responseオブジェクトを返します.
ブラウザがサーバにアクセスするとRequestクラスのインスタンスが生成され、私たちの応答はResponseクラスのインスタンスを作成することができます.
ルート/*Route("/",name="homepage")*/をコメントで定義する
このコメントは、/にアクセスすると、このアクションを呼び出すルーティングを指定します.indexActionのコードは応答を返します.
//annotationでルーティングの方法を定義します.またymlやxmlなども使えます.
応答クラスはSymfonyComponentHttpFoundationResponseをインポートする必要があります
ルーティングでパラメータ/*@Route("/hello/{name}/{sex},name="hellopage")*/
urlで/スラッシュで分ける
パラメータにもルーティングの名前と一致する必要があります
public function myAction($name,$sex){
$msg = " :".$name." | :".$sex;
$response = new Response($msg);
return $response;
}
アドレスバーlocalhost/symfonyのプロジェクトパス/プロジェクト名/hello/小明/男へのアクセスこの値伝達方式は便利であるが,問題もあり,すべてのルーティングがここに伝達される.
Routeにカスタム伝達パラメータのタイプを追加できます
requirementsは、遵守する定義ルールが正則で制約されていることを示します.
php app/console debug:routerを使用して、現在定義されているすべてのルーティングを表示します.
同じルーティングの異なる動作に対しては、常に1つだけを取ります.後続は有効ではありません!
Bundleの作成
自分のBundleを作ってmyBundle
作成方法:php app/console generate:bundleオプション-namespace-format
ヒントに従って一歩一歩操作する
プロファイルのフォーマットはyamlを推奨します
ルートディレクトリの下にsrcディレクトリが1つ増えたフォルダは、さっき作成したBundleの名前です.
myBundle:Controllerに格納されているのはコントローラファイル名xxxControllerです.php
DependencyInJectionには依存項目(クラスライブラリ)が格納されています.
Resourceに格納されているリソース、プロファイル、ビュー、ルーティング情報など
Testsが保存したテストに関するファイル
myBundle.phpはphpのクラスであり、このBundleの多くのファイルの代表として理解できる.
もちろんサードパーティのBundleも使えます
yaml形式のルーティング、接尾辞名.yml
経路はResources/config/routing.yml
コントローラレンダリングビューアクセスルーティングコントローラレンダリングテンプレートを表示
yaml形式のルーティングは簡単で、一般的には注釈スタイルのルーティングほど便利ではありませんが、より統一的な感じがします.
Bundleで使用するルーティングタイプはrouting.ymlで表示します.