Symfony-components
symfony-コンポーネント
前述のように、SymfonyコンポーネントはスタンドアロンのPHPライブラリであり、特定の機能を提供します。これは、任意のPHPアプリケーションで使用できます。 Symfonyのすべてのリリースで、有用な新しいコンポーネントが導入されています。 現在、Symfonyフレームワークには30以上の高品質コンポーネントがあります。 この章では、Symfonyコンポーネントの使用法について学びましょう。
Symfonyコンポーネントのインストール
symfonyコンポーネントはcomposerコマンドを使用して簡単にインストールできます。 次の汎用コマンドを使用して、Symfonyコンポーネントをインストールできます。
cd/path/to/project/dir
composer require symfony/<component_name>
簡単なphpアプリケーションを作成して、 Filesystem コンポーネントをインストールしてみましょう。
ステップ1 *-アプリケーションのフォルダー、 *filesystem-example を作成します
cd/path/to/dev/folder
mdkir filesystem-example
cd filesystem-example
- ステップ2 *-次のコマンドを使用して、ファイルシステムコンポーネントをインストールします。
composer require symfony/filesystem
ステップ3 *-ファイル *main.php を作成し、次のコードを入力します。
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Filesystem\Exception\IOExceptionInterface;
$fs = new Filesystem();
try {
$fs->mkdir('./sample-dir');
$fs->touch('./sample-dir/text.txt');
} catch (IOExceptionInterface $e) {
echo $e;
}
?>
最初の行は非常に重要で、Composerコマンドを使用してインストールされたすべてのコンポーネントから必要なすべてのクラスをロードします。 次の行では、Filesystemクラスを使用します。
ステップ4 *-次のコマンドを使用してアプリケーションを実行すると、新しいフォルダー *sample-dir とその下にファイル test.txt が作成されます。
php main.php
Symfonyコンポーネントの詳細
symfonyは、単純な機能(ファイルシステムなど)から高度な機能(イベント、コンテナーテクノロジー、依存性注入など)までのコンポーネントを提供します。 すべてのコンポーネントについて、次のセクションで1つずつお知らせください。
ファイルシステム
ファイルシステムコンポーネントは、ファイルの作成、フォルダーの作成、ファイルの存在など、ファイルとディレクトリに関連する基本的なシステムコマンドを提供します。 ファイルシステムコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/filesystem
ファインダ
Finderコンポーネントは、指定されたパスでファイルとディレクトリを見つけるための流れるようなクラスを提供します。 パス内のファイルを反復処理する簡単な方法を提供します。 Finderコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/finder
コンソール
コンソールコンポーネントは、ターミナルで実行できるコマンドを簡単に作成するためのさまざまなオプションを提供します。 symfonyは Command コンポーネントを広範囲に使用して、新しいアプリケーションの作成、バンドルの作成などのさまざまな機能を提供します。 WebサーバーのPHPビルドでさえ、インストールセクションにあるように、Symfonyコマンド php bin/console server:run を使用して呼び出すことができます。 Console コンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/console
単純なアプリケーションを作成し、 Console コンポーネントを使用してコマンド HelloCommand を作成し、呼び出します。
- ステップ1 *-次のコマンドを使用してプロジェクトを作成します。
cd/path/to/project
composer require symfony/console
ステップ2 *-ファイル *main.php を作成し、次のコードを含めます。
<?php
require __DIR__ . '/vendor/autoload.php';
use Symfony\Component\Console\Application;
$app = new Application();
$app->run();
?>
*Application* クラスは、ベアボーンコンソールアプリケーションに必要な機能を設定します。
ステップ3 *-アプリケーション *php main.php を実行すると、次の結果が生成されます。
Console Tool
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output,
2 for more verbose output and 3 for debug
Available commands:
help Displays help for a command
list Lists commands
ステップ4 *- *main.php 自体に Command クラスを拡張する HelloCommand というクラスを作成します。
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
class HelloCommand extends Command {
}
アプリケーションは、 Command コンポーネントで使用可能な次の4つのクラスを使用します。
- コマンド-新しいコマンドを作成するために使用
- InputInterface -ユーザー入力の設定に使用
- InputArgument -ユーザー入力を取得するために使用
- OutputInterface -コンソールに出力を印刷するために使用
ステップ5 *-関数 configure()*を作成し、名前、説明、およびヘルプテキストを設定します。
protected function configure() {
$this
->setName('app:hello')
->setDescription('Sample command, hello')
->setHelp('This command is a sample command')
}
ステップ6 *-コマンドの入力引数 *user を作成し、必須として設定します。
protected function configure() {
$this
->setName('app:hello')
->setDescription('Sample command, hello')
->setHelp('This command is a sample command')
->addArgument('name', InputArgument::REQUIRED, 'name of the user');
}
ステップ7 *-2つの引数 *InputArgument および OutputArgument を使用して関数* execute()*を作成します。
protected function execute(InputInterface $input, OutputInterface $output) {
}
ステップ8 *- *InputArgument を使用して、ユーザーが入力したユーザーの詳細を取得し、 OutputArgument を使用してコンソールに出力します。
protected function execute(InputInterface $input, OutputInterface $output) {
$name = $input->getArgument('name');
$output->writeln('Hello, ' . $name);
}
ステップ9 *- *Application クラスの add メソッドを使用して、 HelloCommand をアプリケーションに登録します。
$app->add(new HelloCommand());
完全なアプリケーションは次のとおりです。
<?php
require __DIR__ . '/vendor/autoload.php';
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
class HelloCommand extends Command {
protected function configure() {
$this
->setName('app:hello')
->setDescription('Sample command, hello')
->setHelp('This command is a sample command')
->addArgument('name', InputArgument::REQUIRED, 'name of the user');
}
protected function execute(InputInterface $input, OutputInterface $output) {
$name = $input->getArgument('name');
$output->writeln('Hello, ' . $name);
}
$app = new Application();
$app->add(new HelloCommand());
$app->run();
}
?>
- ステップ10 *-さて、次のコマンドを使用してアプリケーションを実行すると、結果は予想どおりHello、Jonになります。
php main.php app:hello Jon
Symfonyには、アプリケーションでコマンドを呼び出すために使用できるSymfony Webアプリケーションのbinディレクトリに console と呼ばれるビルド済みのバイナリが付属しています。
プロセス
プロセスコンポーネントは、サブプロセスでシステムコマンドを安全かつ効率的な方法で実行するオプションを提供します。 プロセスコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/process
ClassLoader
ClassLoaderコンポーネントは、 PSR-0 および PSR-4 クラスローダー標準の両方の実装を提供します。 クラスの自動ロードに使用できます。 近い将来に減価償却されます。 Composerベースのクラスローダーは、このコンポーネントよりも優先されます。 ClassLoaderコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/class-loader
PropertyAccess
PropertyAccessコンポーネントは、文字列表記を使用してオブジェクトと配列の詳細を読み書きするためのさまざまなオプションを提供します。 たとえば、キー price を持つ配列 Product は、 [price] 文字列を使用して動的にアクセスできます。
$product = array(
'name' => 'Cake'
'price' => 10
);
var priceObj = $propertyAccesserObj->getValue($product, '[price]');
PropertyAccessコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/property-access
PropertyInfo
PropertyInfoコンポーネントはPropertyAccessコンポーネントに似ていますが、PHPオブジェクトでのみ機能し、より多くの機能を提供します。
class Product {
private $name = 'Cake';
private $price = 10;
public function getName() {
return $this->name;
}
public function getPrice() {
return $this->price;
}
}
$class = Product::class;
$properties = $propertyInfoObj->getProperties($class);
/*
Example Result
--------------
array(2) {
[0] => string(4) "name"
[1] => string(5) "price"
}
*/
PropertyInfoコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/property-info
EventDispatcher
EventDispatcherコンポーネントは、PHPでイベントベースのプログラミングを提供します。 イベントをディスパッチしてそれらをリッスンすることにより、オブジェクトが互いに通信できるようにします。 イベントとイベントリスナの章で、イベントの作成方法とリスニング方法を学習します。
EventDispatcherコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/event-dispatcher
DependencyInjection
DependencyInjectionコンポーネントは、依存関係を持つオブジェクトを作成するための簡単で効率的なメカニズムを提供します。 プロジェクトが大きくなると、深い依存関係を持つ多くのクラスが機能するため、正しく処理する必要があります。 そうしないと、プロジェクトは失敗します。 DependencyInjectionは、依存関係を処理するためのシンプルで堅牢なコンテナーを提供します。 コンテナと依存関係注入の概念については、サービスコンテナの章で学習します。
DependencyInjectionコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/dependency-injection
シリアライザー
シリアライザーコンポーネントは、PHPオブジェクトをXML、JSON、バイナリなどの特定の形式に変換するオプションを提供し、データを失うことなく元のオブジェクトに戻すことができます。
シリアライザーコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/serializer
設定
構成コンポーネントは、XML、YAML、PHP、およびiniタイプの構成をロード、解析、読み取り、および検証するオプションを提供します。 データベースから構成の詳細をロードするためのさまざまなオプションも提供します。 これは、Webアプリケーションを明確かつ簡潔に構成するのに役立つ重要なコンポーネントの1つです。 構成コンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/config
ExpressionLanguage
ExpessionLanguageコンポーネントは、本格的な式エンジンを提供します。 式は、値を返すことを目的とした1行のライナーです。 式エンジンを使用すると、式から値を簡単にコンパイル、解析、取得できます。 システム管理者など、PHP以外のプログラマーが1つ以上の式を構成環境(ファイル)で使用できるようにします。 ExpressionLanguageコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/expression-language
OptionsResolver
OptionsResolverコンポーネントは、システムで使用されるオプションシステムを検証する方法を提供します。 たとえば、データベース設定は配列に配置され、dboptionはホスト、ユーザー名、パスワードなどをキーとして使用します。 データベースに接続するために使用する前に、エントリを検証する必要があります。 OptionsResolverは、単純なクラスOptionsResolverとデータベース設定を解決するメソッドリゾルバを提供することでこのタスクを簡素化し、検証の問題があればそれを報告します。
$options = array(
'host' => '<db_host>',
'username' => '<db_user>',
'password' => '<db_password>',
);
$resolver = new OptionsResolver();
$resolver->setDefaults(array(
'host' => '<default_db_host>',
'username' => '<default_db_user>',
'password' => '<default_db_password>',
));
$resolved_options = $resolver->resolve($options);
OptionsResolverコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/options-resolver
ドテンフ
Dotenvコンポーネントは、。envファイルおよび *getenv()、$ _ ENV 、または $ _ SERVER を介してアクセスできるように定義された変数を解析するためのさまざまなオプションを提供します。 Dotenvコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/dotenv
キャッシュ
キャッシュコンポーネントは、拡張 PSR-6 実装を提供します。 Webアプリケーションにキャッシュ機能を追加するために使用できます。 PSR-6 に準拠しているため、簡単に開始でき、別のPSR-6ベースのキャッシュコンポーネントの代わりに簡単に使用できます。 キャッシュコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/cache
Intl
Intlコンポーネントは、C Intl拡張機能の代替ライブラリです。 Intlコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/intl
翻訳
翻訳コンポーネントは、アプリケーションを国際化するためのさまざまなオプションを提供します。 通常、異なる言語の翻訳の詳細は、言語ごとに1つのファイルに保存され、アプリケーションの実行時に動的にロードされます。 翻訳ファイルを作成するには、さまざまな形式があります。 翻訳コンポーネントは、プレーンPHPファイル、CSV、ini、Json、Yaml、ICUリソースファイルなど、あらゆるタイプの形式をロードするためのさまざまなオプションを提供します。 翻訳コンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/translation
ワークフロー
ワークフローコンポーネントは、有限状態マシンを処理するための高度なツールを提供します。 この機能をシンプルでオブジェクト指向の方法で提供することにより、Workflowコンポーネントは比較的簡単にPHPで高度なプログラミングを可能にします。 詳細については、高度なコンセプトの章で説明します。
ワークフローコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/workflow
Yaml
Yamlコンポーネントには、YAMLファイル形式を解析してPHP配列に変換するオプションがあります。 また、プレーンなphp配列からYAMLファイルを書き込むこともできます。 Yamlコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/yaml
Ldap
Ldapコンポーネントは、LDAPまたはActive Directoryサーバーに接続し、それに対してユーザーを認証するためのPHPクラスを提供します。 Windowsドメインコントローラーに接続するオプションを提供します。 Ldapコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/ldap
デバッグ
デバッグコンポーネントは、PHP環境でデバッグを有効にするためのさまざまなオプションを提供します。 通常、PHPコードのデバッグは困難ですが、デバッグコンポーネントは単純なクラスを提供して、デバッグプロセスを容易にし、クリーンで構造化しています。 デバッグコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/debug
ストップウォッチ
Stopwatchコンポーネントは、PHPコードのプロファイルを作成するStopwatchクラスを提供します。 簡単な使用法は次のとおりです。
use Symfony\Component\Stopwatch\Stopwatch;
$stopwatch = new Stopwatch();
$stopwatch->start('somename');
//our code to profile
$profiled_data = $stopwatch->stop('somename');
echo $profiled_data->getPeriods()
ストップウォッチコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/stopwatch
VarDumper
VarDumperコンポーネントは、優れた* dump()*機能を提供します。 VarDumperコンポーネントを組み込み、ダンプ機能を使用して機能を向上させてください。 VarDumperコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/var-dumper
BrowserKit
BrowserKitコンポーネントは、抽象的なブラウザークライアントインターフェイスを提供します。 Webアプリケーションをプログラムでテストするために使用できます。 たとえば、フォームを要求し、サンプルデータを入力して送信し、プログラムでフォーム内の問題を見つけることができます。 BrowserKitコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/browser-kit
PHPUnit Bridge
PHPUnit Bridgeコンポーネントは、PHPUnitテスト環境を改善するための多くのオプションを提供します。 PHPUnit Bridgeコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/phpunit-bridge
資産
資産コンポーネントは、Webアプリケーションでの一般的な資産処理を提供します。 CSS、HTML、JavaScriptなどのアセットのURLを生成し、バージョンメンテナンスも実行します。 アセットコンポーネントの詳細は、View Engineの章で確認します。 資産コンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/asset
CssSelector
CssSelectorコンポーネントは、CSSベースのセレクターをXPath式に変換するオプションを提供します。 Web開発者はXPath式よりもCSSベースのセレクター式を知っていますが、HTMLおよびXMLドキュメントで要素を見つけるための最も効率的な式は* XPath式*です。
CssSelectorを使用すると、開発者は_CSS Selectors_に式を記述できますが、コンポーネントは実行前にXPath式に変換します。 したがって、開発者には、CSSセレクターの単純さとXPath式の効率という利点があります。
CssSelectorコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/css-selector
DomCrawler
DomCrawlerコンポーネントは、DOMコンセプトを使用してHTMLおよびXMLドキュメントで要素を検索するためのさまざまなオプションを提供します。 また、XPath式を使用して要素を検索するオプションも提供します。 DosCrawlerコンポーネントをCssSelectorコンポーネントとともに使用して、XPath式の代わりにCSSセレクターを使用できます。 DomCrawlerコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/dom-crawler
Form
フォームコンポーネントを使用すると、Webアプリケーションでフォームを簡単に作成できます。 フォームのプログラミングの詳細については、フォームの章で説明します。 フォームコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/form
HttpFoundation
HttpFoundationコンポーネントは、HTTP仕様にオブジェクト指向レイヤーを提供します。 デフォルトでは、PHPはHTTPリクエストおよびレスポンスの詳細を $ _ GET、$ _ POST、$ _ FILES、$ _ SESSION などの配列ベースのオブジェクトとして提供します。 Cookieの設定などのHTTPベースの機能は、単純で単純な古い関数* setCookie()*を使用して実行できます。 HttpFoundationは、Request、Response、RedirectResponseなどのクラスの小さなセットですべてのHTTP関連機能を提供します。これらのクラスについては後の章で学習します。
HttpFoundationコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/http-foundation
HttpKernel
HttpKernelコンポーネントは、Symfony Webセットアップのコアコンポーネントです。 Request オブジェクトの受信から Response オブジェクトの返送まで、Webアプリケーションに必要なすべての機能を提供します。 Symfony Webアプリケーションの完全なアーキテクチャは、Symfony Webフレームワークのアーキテクチャで説明されているように、HttpKernelによって提供されます。
HttpKernelコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/http-kernel
ルーティング
ルーティングコンポーネントは、HTTP要求を事前定義された構成変数のセットにマップします。 ルーティングは、アプリケーションのどの部分でリクエストを処理するかを決定します。 ルーティングの章でルーティングの詳細を学びます。
ルーティングコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/filesystem
テンプレート
テンプレートコンポーネントは、効率的なテンプレートシステムを構築するために必要なインフラストラクチャを提供します。 Symfonyは、Viewエンジンの実装にテンプレートコンポーネントを使用します。 テンプレートの詳細については、Viewエンジンの章で説明します。
テンプレートコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/templating
バリデーター
Validatorコンポーネントは、 JSR-303 Bean Validation Specification の実装を提供します。 Web環境でフォームを検証するために使用できます。 Validatorの詳細については、検証の章で説明します。
検証コンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/validator
セキュリティ
セキュリティコンポーネントは、HTTP基本認証、HTTPダイジェスト認証、インタラクティブフォームベース認証、X.509証明書ログインなど、Webアプリケーションに完全なセキュリティシステムを提供します。 また、組み込みのACLシステムを介して、ユーザーロールに基づいた承認メカニズムも提供します。 詳細については、高度なコンセプトの章で説明します。
セキュリティコンポーネントは、次のコマンドを使用してインストールできます。
composer require symfony/security