symfony-コンポーネント

前に説明したように、Symfonyコンポーネントは特定の機能を提供するスタンドアロンのPHPライブラリであり、任意のPHPアプリケーションで使用できます。便利な新しいコンポーネントがSymfonyのすべてのリリースで導入されています。現在、Symfonyフレームワークには30以上の高品質コンポーネントがあります。この章では、Symfonyコンポーネントの使用法について学びましょう。

symfonyコンポーネントのインストール

symfonyコンポーネントは、composerコマンドを使用して簡単にインストールできます。以下の汎用コマンドを使用して、任意のSymfonyコンポーネントをインストールできます。

cd /path/to/project/dir 
composer require symfony/<component_name>

簡単なphpアプリケーションを作成してインストールしてみましょう Filesystem 成分。

Step 1 −アプリケーション用のフォルダを作成します。 filesystem-example

cd /path/to/dev/folder 
mdkir filesystem-example 
cd filesystem-example

Step 2 −次のコマンドを使用してファイルシステムコンポーネントをインストールします。

composer require symfony/filesystem

Step 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クラスを使用しています。

Step 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

簡単なアプリケーションを作成してコマンドを作成しましょう。 HelloCommand を使用して Console コンポーネントを呼び出します。

Step 1 −次のコマンドを使用してプロジェクトを作成します。

cd /path/to/project 
composer require symfony/console

Step 2 −ファイルを作成する main.php 次のコードを含めます。

<?php 
   require __DIR__ . '/vendor/autoload.php'; 
   use Symfony\Component\Console\Application; 
   
   $app = new Application(); 
   $app->run(); 
?>

Application クラスは、ベアボーンコンソールアプリケーションに必要な機能を設定します。

Step 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

Step 4 −というクラスを作成します HelloCommand 延長 Command のクラス main.php 自体。

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 { 
}

アプリケーションは、で利用可能な次の4つのクラスを使用します Command 成分。

  • Command −新しいコマンドを作成するために使用されます

  • InputInterface −ユーザー入力の設定に使用

  • InputArgument −ユーザー入力を取得するために使用されます

  • OutputInterface −コンソールへの出力の印刷に使用されます

step 5 −関数を作成する configure() 名前、説明、ヘルプテキストを設定します。

protected function configure() { 
   $this 
      ->setName('app:hello') 
      ->setDescription('Sample command, hello') 
      ->setHelp('This command is a sample command') 
}

step 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'); 
}

step 7 −関数を作成する execute() 2つの引数で InputArgument そして OutputArgument

protected function execute(InputInterface $input, OutputInterface $output) { 
}

step 8 −使用 InputArgument ユーザーが入力したユーザーの詳細を取得し、を使用してコンソールに印刷します。 OutputArgument

protected function execute(InputInterface $input, OutputInterface $output) { 
   $name = $input->getArgument('name'); 
   $output->writeln('Hello, ' . $name); 
}

step 9 −登録する HelloCommand を使用してアプリケーションに add の方法 Application クラス。

$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(); 
   }         
?>

Step 10 −ここで、次のコマンドを使用してアプリケーションを実行すると、期待どおりにHello、Jonになります。

php main.php app:hello Jon

symfonyには、と呼ばれるビルド済みのバイナリが付属しています console Symfony Webアプリケーションのbinディレクトリにあり、アプリケーションでコマンドを呼び出すために使用できます。

処理する

プロセスコンポーネントは、安全かつ効率的な方法で、サブプロセス内の任意のシステムコマンドを実行するためのオプションを提供します。プロセスコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/process

ClassLoader

ClassLoaderコンポーネントは、両方の実装を提供します PSR-0 そして PSR-4クラスローダー標準。クラスを自動ロードするために使用できます。近い将来、減価償却される予定です。このコンポーネントよりも、Composerベースのクラスローダーが推奨されます。ClassLoaderコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/class-loader

PropertyAccess

PropertyAccessコンポーネントは、文字列表記を使用してオブジェクトと配列の詳細を読み書きするためのさまざまなオプションを提供します。たとえば、配列Product キー付き price を使用して動的にアクセスできます [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

シリアライザー

Serializerコンポーネントは、PHPオブジェクトをXML、JSON、Binaryなどの特定の形式に変換するオプションを提供し、データを失うことなく元のオブジェクトに変換できるようにします。

シリアライザコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/serializer

構成

構成コンポーネントは、XML、YAML、PHP、およびiniタイプの構成をロード、解析、読み取り、および検証するためのオプションを提供します。データベースから構成の詳細をロードするためのさまざまなオプションも提供します。これは、Webアプリケーションを明確かつ簡潔に構成するのに役立つ重要なコンポーネントの1つです。構成コンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/config

ExpressionLanguage

ExpessionLanguageコンポーネントは、本格的な式エンジンを提供します。式は、値を返すことを目的としたワンライナーです。式エンジンを使用すると、式から値を簡単にコンパイル、解析、および取得できます。これにより、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

Dotenvコンポーネントは、.envファイルとそのファイルで定義されている変数を解析して、 getenv(), $_ENV、または $_SERVER。Dotenvコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/dotenv

キャッシュ

キャッシュコンポーネントは拡張を提供します PSR-6実装。これを使用して、Webアプリケーションにキャッシュ機能を追加できます。続くのでPSR-6、開始は簡単で、別のPSR-6ベースのキャッシュコンポーネントの代わりに簡単に使用できます。キャッシュコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/cache

国際

Intlコンポーネントは、CIntl拡張機能の代替ライブラリです。Intlコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/intl

翻訳

翻訳コンポーネントは、アプリケーションを国際化するためのさまざまなオプションを提供します。通常、さまざまな言語の翻訳の詳細は、言語ごとに1つのファイルでファイルに保存され、アプリケーションの実行時に動的にロードされます。翻訳ファイルを作成するには、さまざまな形式があります。翻訳コンポーネントは、プレーンPHPファイル、CSV、ini、Json、Yaml、ICUリソースファイルなど、あらゆるタイプの形式をロードするためのさまざまなオプションを提供します。翻訳コンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/translation

ワークフロー

ワークフローコンポーネントは、有限状態マシンを処理するための高度なツールを提供します。この機能をシンプルでオブジェクト指向の方法で提供することにより、ワークフローコンポーネントは比較的簡単に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ブリッジ

PHPUnit Bridgeコンポーネントは、PHPUnitテスト環境を改善するための多くのオプションを提供します。PHPUnit Bridgeコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/phpunit-bridge

資産

アセットコンポーネントは、Webアプリケーションでの一般的なアセット処理を提供します。CSS、HTML、JavaScriptなどのアセットのURLを生成し、バージョンのメンテナンスも実行します。アセットコンポーネントについては、ViewEngineの章で詳しく確認します。アセットコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/asset

CssSelector

CssSelectorコンポーネントは、CSSベースのセレクターをXPath式に変換するオプションを提供します。Web開発者はXPath式よりもCSSベースのセレクター式を知っていますが、HTMLおよびXMLドキュメントで要素を見つけるための最も効率的な式はXPath Expression

CssSelectorを使用すると、開発者はCSSセレクターで式を記述できますが、コンポーネントはそれを実行する前にXPath式に変換します。したがって、開発者には、CSSセレクターが単純でXPath式が効率的であるという利点があります。

CssSelectorコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/css-selector

DomCrawler

DomCrawlerコンポーネントは、DOMの概念を使用してHTMLおよびXMLドキュメント内の要素を検索するためのさまざまなオプションを提供します。また、XPath式を使用して要素を検索するオプションも提供します。DomCrawlerコンポーネントをCssSelectorコンポーネントと一緒に使用して、XPath式の代わりにCSSセレクターを使用できます。DomCrawlerコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/dom-crawler

フォームコンポーネントを使用すると、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コンポーネントは、SymfonyWebセットアップのコアコンポーネントです。Webアプリケーションに必要なすべての機能を提供します-受信からRequest 返送に反対 Responseオブジェクト。Symfony Webアプリケーションの完全なアーキテクチャは、SymfonyWebフレームワークのアーキテクチャで説明されているようにHttpKernelによって提供されます。

HttpKernelコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/http-kernel

ルーティング

ルーティングコンポーネントは、HTTP要求を事前定義された構成変数のセットにマップします。ルーティングは、アプリケーションのどの部分がリクエストを処理するかを決定します。ルーティングについて詳しくは、ルーティングの章をご覧ください。

ルーティングコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/filesystem

テンプレート

テンプレートコンポーネントは、効率的なテンプレートシステムを構築するために必要なインフラストラクチャを提供します。Symfonyは、Viewエンジンの実装にテンプレートコンポーネントを使用します。テンプレートコンポーネントの詳細については、ビューエンジンの章をご覧ください。

テンプレートコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/templating

バリデーター

バリデーターコンポーネントは、 JSR-303 Bean Validation Specification。Web環境でフォームを検証するために使用できます。バリデーターの詳細については、バリデーターの章をご覧ください。

バリデータコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/validator

セキュリティ

セキュリティコンポーネントは、HTTP基本認証、HTTPダイジェスト認証、インタラクティブフォームベース認証、X.509認証ログインなど、Webアプリケーションに完全なセキュリティシステムを提供します。また、組み込みのACLシステムを通じてユーザーの役割に基づく認証メカニズムを提供します。 。詳細については、高度な概念の章で説明します。

セキュリティコンポーネントは、次のコマンドを使用してインストールできます。

composer require symfony/security