目次
Symfony2のプラグインフォーマット分析、symfony2の学習ノート
您可能感兴趣的文章:
ホームページ バックエンド開発 PHPチュートリアル symfony2 学習ノート プラグイン形式の分析、symfony2 学習ノート_PHP チュートリアル

symfony2 学習ノート プラグイン形式の分析、symfony2 学習ノート_PHP チュートリアル

Jul 12, 2016 am 08:56 AM
symfony プラグイン

Symfony2のプラグインフォーマット分析、symfony2の学習ノート

この記事ではSymfony2のプラグインフォーマットについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

バンドルは他のフレームワークのプラグインに似ていますが、プラグインよりも優れたパフォーマンスを発揮します。他のフレームワークとの主な違いは、Symfony2 のコア フレームワーク関数と作成したすべてのアプリケーション コードを含むすべてがバンドルであることです。 Symfony2 では、バンドルは第一級市民です。これにより、他のサードパーティが開発したコンテンツ パッケージを使用したり、独自のバンドルを配布したりする柔軟性が高まります。アイデアに応じて、プログラムに何を適用し、何を最適化しないかを簡単に選択できます。

バンドルはディレクトリであり、非常に優れた構造を持ち、クラスからコントローラー、Web リソースまであらゆるものを保存できます。

バンドルは、単一のコンテンツを実装するファイル ディレクトリの構造化されたコレクションにすぎません。

BlogBu​​ndle、ForumBundle、またはユーザー管理を実装するバンドルを作成できます (そのようなオープンソース バンドルはすでに多数あるようです)。各バンドル ディレクトリには、PHP ファイル、テンプレート、スタイル シート、JavaScript ファイル、テスト コンテンツ、その他関連するものを含む、実装コンテンツに関連するすべてのものが含まれています。実装されるコンテンツのすべての側面がバンドルに保持されます。

アプリケーションは、AppKernel クラスの registerBundles() メソッドで定義されたすべてのバンドルで構成されます。

リーリー

ここでは、この方法を使用してアプリケーション構成を均一に制御および管理できます。

バンドルは任意のディレクトリに保存でき、app/autoload.php ファイルでオートローダーを設定することによって自動的にロードするだけで済みます。

バンドルを作成する

Symfony2 標準バージョンには、フル機能のバンドル作成ツール ファイルが用意されています。これを実行してバンドルのすべてのコンテンツを作成できます。もちろん、それも可能です

自分で作成することを選択します。次に、AcmeTestBundle を作成し、アプリケーションで動作させます。ここでの Acme は偽のプロバイダー名であることに注意してください。これを自分の組織または会社の名前に完全に置き換えることができます。

まず、src/Acme/TestBundle/ ディレクトリを作成し、新しいファイル AcmeTestBundle.php を追加します

リーリー

次に、アプリケーションで使用できるようにするには、AppKernel クラスの registerBundles() メソッドに追加する必要があります。

リーリー

今は何もできませんが、アプリケーションの一部になっています。

Symfony2 が提供するコマンドラインツールを使用して以下を作成することもできます:

リーリー

上記のコマンドラインツールを使用すると、作成したバンドルがappKernelクラスに自動的に登録されます。

バンドルのディレクトリ構造

Symfony2 に付属するデモ バンドルのディレクトリ構造を見てください:

上記のスクリーンショットからわかるように、Bundle のディレクトリ構造はシンプルで柔軟です:

Controller/ には、HelloController.php などのバンドルのすべてのコントローラー ファイルが含まれます。
dependencyInjection/ は、サービス構成のインポート、コンパイラ トランスポートの登録などを行う、特定の依存関係注入拡張クラスを保持します。このディレクトリは必須ではありません。
Resources/config/ には、ルーティング設定 (routing.yml など) を含む設定ファイルが保存されます。
リソース/ビュー/ すべてのテンプレートは、対応するコントローラーの名前に従ってフォルダーに分割され、ここに保存されます。たとえば、Hello/index.html.twig などです。
Resources/public/ アクセス可能なすべての Web リソース (画像、スタイル シートなど) と、assets:install コンソール コマンドを使用してプロジェクトの web/ ディレクトリにコピーまたは非同期的にリンクされたコンテンツ。
バンドル内のすべてのテストをテスト/保存します

以下は、Symfony2 が推奨するバンドルの標準ルールの一部です:

バンドル名:

バンドルも PHP 名前空間です。名前空間は、名前空間とクラス名に関する PHP5.3 の内部技術標準に準拠する必要があります。先頭にプロバイダー名を使用し、その後に分類セグメント (省略可能)、最後に名前空間の短縮名を使用します。名前の末尾には Bundle を付ける必要があります。ネームスペースをバンドルにするには、バンドル クラスをネームスペースに追加するだけです。

バンドルクラスの名前:

数字、文字、アンダースコアのみを使用できます
キャメルケースの名前付けを使用します
説明的で簡潔な名前を使用してください (2 単語以内)
ベンダー名をプレフィックスとして使用します (オプションのカテゴリ名前空間)

名前のサフィックスとしてバンドルを追加します

例:

名前空間 => バンドルクラス名

リーリー

バンドルクラスを定義するときの getName() メソッドはクラス名を返す必要があります。

各バンドルにはエイリアスがあります。エイリアスは、バンドル名の短縮版を小文字でアンダースコアで区切ったものです。たとえば、acme_hello のバンドルの元の名前は AcmeHelloBundle で、acme_social_blog は AcmeSocialBlogBu​​ndle のインスタンスです。

エイリアスはバンドル内で一意である必要があります。

バンドルのディレクトリ構造: HelloBundle の基本的なディレクトリ構造

XXX/...
  HelloBundle/
    HelloBundle.php
    Controller/
    Resources/
      meta/
        LICENSE
      config/
      doc/
        index.rst
      translations/
      views/
      public/
    Tests/

ログイン後にコピー

上面的XXX/... 映射到该bundle的命名空间。其中下面的文件是必备的:

HelloBundle.php;

Resources/meta/LICENSE: 全文的许可代码;
Resources/doc/index.rst: bundle说明的根目录文件。

使用类的子文件夹的深度应该保持到最小(2级是极限)。如果更多级可以定义为非静态,不过很少使用。bundle的目录是只读的。如果你需要修改临时文件,把它们保存到主应用程序的cache/ 或者 log/ 目录下。

需要强调的类和文件

类型 VS 目录

Commands VS Command/
Controllers VS Controller/
Service Container Extensions VS /DependencyInjection/
Event Listeners VS EventListener/
Configuration VS Resources/config
Web Resources VS Resources/public
Translation files VS Resources/translations/
Templates VS Resources/views
Unit and Functional Test VS Tests/

类:

bundle的目录结构是被用来当作命名空间层级的。比如HelloController类保存在 Bundle/HelloBundle/Controller/HelloController.php文件中。

所以类的完全限定名是 Bundle\HelloBundle\Controller\HelloController 。 一些类被看作是装饰,应该越短越好,比如Commands,Helpers, Listeners 和Controllers等,一般都会被当作后缀。

跟事件分发器有关的类应该用后缀Listener标识。

异常类应该保存到一个Exception子命名空间中。

关于提供商

一个bundle不应该被嵌入第三方的PHP类库,它应该依靠Symfony2标准来自动加载它们。

一个bundle不应该被嵌入第三方的javascript,CSS或者其它语言写的任何类库。

关于测试

一个bundle应该有一个使用PHPUnit的测试单元并把它存储在Tests/ 目录下。

测试应该遵循以下原则:

测试套件必须能够被一个简单的phpunit 命令从一个简单的应用程序中执行。

功能测试应该只备用来测试回复输出和一些监控信息。

测试代码覆盖应该至少在95%以上的基本代码。

一个测试套件可以不包含AllTests.php脚本,但必须依靠外部的phpunit.xml.dist文件。

文档说明

所有的类必须带有PHPDoc。

Controllers

最好的情况下,controller应该在一个可以部署到其它地方的bundle中,那么它不能继承Controller基类。而是通过实现ContainerAwareInterface接口或者继承ContainerAware来取代继承Controller。

Routing

如果bundle提供路由,他们必须使用bundle的别名为前缀,比如一个AcmeBlogBundle实例,所有的路由名必须是acme_blog_ 开头。

Templates

如果bundle提供模板,它必须使用Twig。 bundle不必低通一个主布局文件,如果你的bundle是一个完整的应用程序除外。

翻译文件

如果bundle提供信息翻译,它必须是被定义成XLIFF格式,区域名必须被命名在bundle名字之后,如bundle.hello

配置

为了提供更大的灵活性,一个bundle可以使用Symfony2的内建机制提供配置设置。对于简单的设置,依赖于默认的Symfony2的parameters配置入口。 Symfony2参数都是简单的 key/value 对。值可以是任意的合法的PHP值。 每个参数名应该以讹bundle的别名开始,这只是一个最佳的建议。参数名其余部分用点号(.)分割,比如 acme_hello.email.from

让最终用户可以在配置文件中直接提供值信息。

YAML格式:

# app/config/config.yml
parameters:
    acme_hello.email.from: fabien@example.com

ログイン後にコピー

XML格式:

<!-- app/config/config.xml -->
<parameters>
   <parameter key="acme_hello.email.from">fabien@example.com</parameter>
</parameters>

ログイン後にコピー

PHP代码格式:

// app/config/config.php
$container->setParameter('acme_hello.email.from', 'fabien@example.com');

ログイン後にコピー

INI格式:

[parameters]
acme_hello.email.from = fabien@example.com

ログイン後にコピー

这样就可以在代码中从容器获取这些配置信息了:

$container->getParameter('acme_hello.email.from');

ログイン後にコピー

如果你定义服务,我们也推荐你使用bundle的别名作为前缀。

总结思考:

以上是关于Symfony2中最主要的插件格式bundle的大体情况,在整个Symfony2为基础开发的应用程序中,几乎全部都是有bundle组成。Symfony2本身的核心组件都是FrameworkBundle。在Symfony2交流社区中,已经有了大量的开发者贡献了他们的bundle,我们可以直接拿来集成到我们自己的应用程序中使用。上面所说的大部分规则,都是应用于你开发贡献bundle时应该遵循的统一规则,以方便其它用户使用。

带有第三方贡献的bundle的Symfony2开发包:

如果你不打算把你的bundle贡献出来,那么完全可以不用按照这里说的大部分规则进行开发。

希望本文所述对大家基于Symfony框架的PHP程序设计有所帮助。

您可能感兴趣的文章:

  • Symfony2联合查询实现方法
  • Symfony2创建页面实例详解
  • symfony2.4的twig中date用法分析
  • Symfony2之session与cookie用法小结
  • Symfony2实现从数据库获取数据的方法小结
  • Symfony2框架学习笔记之表单用法详解
  • Symfony2学习笔记之系统路由详解
  • Symfony2学习笔记之控制器用法详解
  • Symfony2学习笔记之模板用法详解
  • Symfony2安装第三方Bundles实例详解
  • Symfony2函数用法实例分析

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1111332.htmlTechArticleSymfony2学习笔记之插件格式分析,symfony2学习笔记 本文讲述了Symfony2的插件格式。分享给大家供大家参考,具体如下: 一个bundle类似于其它...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PyCharm 初心者ガイド: プラグインのインストールを徹底理解! PyCharm 初心者ガイド: プラグインのインストールを徹底理解! Feb 25, 2024 pm 11:57 PM

PyCharm は、開発者がより効率的にコードを記述できるようにする豊富な機能とツールを提供する、強力で人気のある Python 統合開発環境 (IDE) です。 PyCharm のプラグイン機構は、機能を拡張するための強力なツールであり、さまざまなプラグインをインストールすることで、PyCharm にさまざまな機能やカスタマイズ機能を追加できます。したがって、PyCharm の初心者にとって、プラグインのインストールを理解し、習熟することが重要です。この記事では、PyCharm プラグインの完全なインストールについて詳しく説明します。

Illustrator でのプラグインの読み込みエラー [修正] Illustrator でのプラグインの読み込みエラー [修正] Feb 19, 2024 pm 12:00 PM

Adobe Illustrator を起動すると、プラグインの読み込みエラーに関するメッセージが表示されますか?一部の Illustrator ユーザーは、アプリケーションを開いたときにこのエラーに遭遇しました。メッセージの後には、問題のあるプラグインのリストが続きます。このエラー メッセージは、インストールされているプラ​​グインに問題があることを示していますが、Visual C++ DLL ファイルの破損や環境設定ファイルの破損など、他の理由によって発生する可能性もあります。このエラーが発生した場合は、この記事で問題を解決する方法を説明しますので、以下を読み続けてください。 Illustrator でのプラグインの読み込みエラー Adob​​e Illustrator を起動しようとしたときに「プラグインの読み込みエラー」エラー メッセージが表示された場合は、次の操作を行うことができます。 管理者として

Chrome プラグイン拡張機能のインストール ディレクトリとは何ですか? Chrome プラグイン拡張機能のインストール ディレクトリとは何ですか? Mar 08, 2024 am 08:55 AM

Chrome プラグイン拡張機能のインストール ディレクトリとは何ですか?通常の状況では、Chrome プラグイン拡張機能のデフォルトのインストール ディレクトリは次のとおりです。 1. WindowsXP での Chrome プラグインのデフォルトのインストール ディレクトリの場所: C:\DocumentsandSettings\username\LocalSettings\ApplicationData\Google\Chrome\UserData\ Default\Extensions2. Windows7 の chrome プラグインのデフォルトのインストール ディレクトリの場所: C:\Users\username\AppData\Local\Google\Chrome\User

Edge ブラウザがこのプラグインをサポートしない理由に対する 3 つの解決策を共有します Edge ブラウザがこのプラグインをサポートしない理由に対する 3 つの解決策を共有します Mar 13, 2024 pm 04:34 PM

ユーザーが Edge ブラウザを使用する場合、より多くのニーズを満たすためにいくつかのプラグインを追加する場合があります。しかし、プラグインを追加すると、このプラグインはサポートされていないと表示されます。この問題を解決するにはどうすればよいですか?今日は編集者が 3 つの解決策を紹介しますので、ぜひ試してみてください。方法 1: 別のブラウザを使用してみてください。方法 2: ブラウザ上の Flash Player が古いか見つからないため、プラグインがサポートされていない可能性があり、公式 Web サイトから最新バージョンをダウンロードできます。方法3:「Ctrl+Shift+Delete」キーを同時に押します。 「データを消去」をクリックしてブラウザを再度開きます。

PyCharm Community Edition は十分なプラグインをサポートしていますか? PyCharm Community Edition は十分なプラグインをサポートしていますか? Feb 20, 2024 pm 04:42 PM

PyCharm Community Edition は十分なプラグインをサポートしていますか?特定のコード例が必要 ソフトウェア開発の分野で Python 言語がますます広く使用されるようになるにつれて、プロ仕様の Python 統合開発環境 (IDE) として PyCharm が開発者に好まれています。 PyCharmはプロフェッショナル版とコミュニティ版の2つのバージョンに分かれており、コミュニティ版は無料で提供されますが、プラグインのサポートがプロフェッショナル版に比べて制限されています。そこで問題は、PyCharm Community Edition は十分なプラグインをサポートしているかということです。この記事では、具体的なコード例を使用して、

WeChat ミニプログラム機能を WordPress プラグインに追加する方法 WeChat ミニプログラム機能を WordPress プラグインに追加する方法 Sep 06, 2023 am 09:03 AM

WeChat ミニ プログラム機能を WordPress プラグインに追加する方法 WeChat ミニ プログラムの人気と人気に伴い、ますます多くの Web サイトやアプリケーションが WeChat ミニ プログラムとの統合を検討し始めています。コンテンツ管理システムとして WordPress を使用している Web サイトの場合、WeChat アプレット機能を追加すると、ユーザーはより便利なアクセス エクスペリエンスとより多くの機能の選択肢を提供できます。この記事では、WordPress プラグインに WeChat ミニプログラム機能を追加する方法を紹介します。ステップ 1: WeChat ミニ プログラム アカウントを登録する. まず、WeChat アプリを開く必要があります

pycharm プラグインはどこにありますか? pycharm プラグインはどこにありますか? Dec 04, 2023 pm 03:39 PM

インストール手順: 1. PyCharm を開き、上部のメニュー バーの [ファイル] オプションをクリックします; 2. [設定] を選択します; 3. 設定ウィンドウで、[プラグイン] オプションを選択します; 4. [リポジトリの参照] をクリックします。 .」ボタンをクリックすると、利用可能なすべてのプラグインが表示されます。 5. 検索ボックスにインストールしたいプラグインの名前を入力し、「検索ボタン」をクリックします。 6. 必要なプラグインを見つけます。インストールするには、プラグイン名の右側にある「インストール」ボタンをクリックします。7、インストールが完了したら再起動します。

EclipseSVNプラグインのインストールと設定方法を詳しく解説 EclipseSVNプラグインのインストールと設定方法を詳しく解説 Jan 28, 2024 am 08:42 AM

EclipseSVN プラグインのインストールと設定方法の詳細な説明 Eclipse は、機能を拡張するためにさまざまなプラグインをサポートする、広く使用されている統合開発環境 (IDE) です。その 1 つは EclipseSVN プラグインで、開発者が Subversion バージョン管理システムと対話できるようにします。この記事では、EclipseSVN プラグインのインストールおよび設定方法を詳しく説明し、具体的なコード例を示します。ステップ 1: EclipseSVN プラグインをインストールし、Eclipse を開く

See all articles