همانطور که در قسمت های قبلی گفته شد، اجزای سیمفونی ، کتابخانه های پی اچ پی مستقلی هستند که ویژگی ها یا امکانات خاصی را ارائه می دهند و می توانند در هر برنامه PHP استفاده شوند. با هر نسخه جدیدی که از سیمفونی می رسد، اجزای مفید جدیدی هم به آن اضافه می شوند . در حال حاضر 30 عدد کامپوننت با کیفیت بالا در چارچوب سیمفونی وجود دارد. در این قسمت اجزای مورد استفاده در سیمفونی را معرفی می کنیم.
نصب یک کامپوننت سیمفونی
اجزای سیمفونی را می توان به راحتی با استفاده از فرمان composer نصب کرد. به دنبال فرمان عمومی می توانید برای نصب هر مولفه سیمفونی استفاده کنید.
cd /path/to/project/dir
composer require symfony/<component_name>
اجازه بدین یک برنامه پی اچ پی ساده ایجاد کنیم و سعی کنیم جزءfile-system را نصب کنیم.
مرحله 1 – ایجاد یک پوشه برای برنامه به نام filesystem-example
cd /path/to/dev/folder
mdkir filesystem-example
cd filesystem-example
مرحله 2 – نصب کامگوننت filesystem با استفاده از دستور زیر:
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 بارگذاری می کند. خطوط بعدی از کلاس File System استفاده می کنند.
مرحله 4 – برنامه را با استفاده از دستور زیر اجرا کنید و یک پوشه جدید sample-dir و فایل test.txt زیر آن ایجاد می کند.
php main.php
معرفی کامپوننت های سیمفونی
Symfony اجزایی را که شامل ویژگی های ساده تا ویژگی پیشرفته را شامل می شود.
Filesystem
مولفه Filesystem یک فرمان سیستم پایه مربوط به فایل ها و دایرکتوری ها مانند ایجاد فایل، ایجاد پوشه، وجود فایل و غیره را فراهم می کند. مولفه سیستم فایل می تواند با استفاده از دستور زیر نصب شود.
composer require symfony/filesystem
Finder
مولفه Finder امکانات لازم برای یافتن فایل ها و دایرکتوری ها در یک مسیر مشخص فراهم می کند. این یک راه آسان برای تکرار در فایل ها در یک مسیر است. فایندر را می توان با استفاده از فرمان زیر نصب کرد.
composer require symfony/finder
Console
جزء Console گزینه های مختلفی برای ایجاد دستورات فراهم می کند که می تواند در یک ترمینال اجرا شود. Symfony از کامپوننت Command به طور گسترده ای برای ارائه قابلیت های مختلف مانند ایجاد یک برنامه جدید، ایجاد یک بسته نرم افزاری و غیره استفاده می کند. حتی PHP ساخت در وب سرور می تواند با استفاده از دستور Symfony، سرور پی اچ پی / کنسول اجرا شود: . جزء کنسول را می توان با استفاده از دستور زیر نصب کرد.
composer require symfony/console
Process
مولفه Process گزینه هایی را برای اجرای هر فرمان سیستم در فرآیند فرعی، به شیوه ای ایمن و کارآمد فراهم می کند. مولفه Process را می توان با استفاده از فرمان زیر نصب کرد.
composer require symfony/process
ClassLoader
مولفه ClassLoader پیاده سازی هایی برای استانداردهای بارگذاری کلاس PSR-0 و PSR-4 فراهم می کند و ار آن می توان برای بارگذاری کلاس ها استفاده کرد. کامپوننت 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
جزء Serializer گزینه ای برای تبدیل یک شیء PHP به فرمت خاص مانند XML، JSON، Binary و غیره را فراهم می کند و سپس اجازه می دهد تا آن را به یک شیء اصلی بدون هیچ گونه خرابی داده تبدیل کنید.
مولفه Serializer را می توان با استفاده از دستور زیر نصب کرد.
composer require symfony/serializer
Config
کامپوننت Config گزینه هایی را برای بارگذاری، تجزیه، خواندن و تایید تنظیمات نوع XML، YAML، PHP و ini فراهم می کند. این مولفه گزینه های مختلفی را برای بارگیری جزئیات پیکربندی از پایگاه داده فراهم می کند. این یکی از اجزای مهم در پیکربندی برنامه وب در یک روش واضح و مختصر است. جزء پیکربندی را می توان با استفاده از دستور زیر نصب کرد.
composer require symfony/config
OptionsResolver
جزء OptionsResolver روشی برای اعتبارسنجی سیستم گزینه های مورد استفاده در سیستم ما فراهم می کند. برای مثال، تنظیمات پایگاه داده به عنوان کلید، در یک آرایه قرار می گیرد، dboption با میزبان، نام کاربری، رمز عبور و غیره. قبل از استفاده از آن برای اتصال به یک پایگاه داده نیاز به تایید ورودی دارید. OptionsResolver این وظیفه را با ارائه ClassResolver کلاس ساده و یک Resolver متد ساده می کند که تنظیمات پایگاه داده را حل می کند و اگر یک مسئله اعتبار سنجی وجود داشته باشد، آن را گزارش خواهد داد.
در این قسمت به معرفی چند جزء مهم فریمورک سیمفونی پرداختیم ، در قسمت های بعدی اجزای بیشتری از سیمفونی را آموزش خواهیم داد.