<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های مرتضی کریمی</title>
        <link>https://virgool.io/feed/@mortezakarimi</link>
        <description>عاشق یادگیری هستم، هیچ وقت دست از تلاش برنمیدارم، تو کارم سعی کردم همیشه خلاق باشم، حل کردن مسائل پیچیده برای من حکم پازل رو داره که دوست دارم حل کنم</description>
        <language>fa</language>
        <pubDate>2026-06-18 06:11:42</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/61677/avatar/AjieUn.png?height=120&amp;width=120</url>
            <title>مرتضی کریمی</title>
            <link>https://virgool.io/@mortezakarimi</link>
        </image>

                    <item>
                <title>سیمفونی Flex، نام مستعار و توویگ (twig) | بخش چهارم</title>
                <link>https://virgool.io/symfony/%D8%B3%DB%8C%D9%85%D9%81%D9%88%D9%86%DB%8C-flex-%D9%86%D8%A7%D9%85-%D9%85%D8%B3%D8%AA%D8%B9%D8%A7%D8%B1-%D9%88-%D8%AA%D9%88%D9%88%DB%8C%DA%AF-twig-%D8%A8%D8%AE%D8%B4-%DA%86%D9%87%D8%A7%D8%B1%D9%85-jxwnud68q1sf</link>
                <description>سیمفونی Flex، نام مستعار و توویگ (twig) | بخش چهارمخب در ادامه قسمت‌های قبلی در این قسمت با جزئیات بیشتری در مورد فریمورک سیمفونی آشنا میشیم، در این قسمت می‌فهمیم که سیمونی flex چی هست و کارش چیه، چطوری یک بسته با نام مستعار(Alias) درست کنیم و در انتها هم قاره بریم و توویگ رو وارد پروژه کنیم.نصب بسته جدید در پروژهبرای شروع بیاییم و یک بسته جدید بر روی پروژه نصب کنیم، برای این کار در دایرکتوری پروژه دستور زیر رو وارد می‌کنیم.composer require sec-checker --devبهتر هست که در انتهای دستور --dev رو اضافه کنیم چون بسته بالا فقط در زمان توسعه پروژه استفاده میشه.حواستون باش: طبق تجربه‌ای که من تو پروژه‌های مختلف داشتم موقع نصب بسته‌ها از خودتون این سوال رو بپرسید که؛ آیا این بسته رو من در زمانی غیر از توسعه هم نیاز دارم؟؛  بعد اگر فقط در زمان توسعه نیاز دارید --dev رو هم به انتهای دستور اضافه کنید تا از لحاظ پردازشی مشکلاتتون کمتر باشه.خب الان از خودتون میپرسید که این نصب بسته چه ربطی به سیمفونی داشت؟ اینو که با composer نصب کردیم! دقیقا نکته همینجاست!  زمانی که شما درخواست نصب sec-checker رو ارسال می‌کنید، این اسم یک اسم بسته معتبر نیست، خب در این حالت چه اتفاقی میوفته؟! برای این که بیشتر دستتون بیاد پیشنهاد می‌کنم فایل composer.json رو باز کنید.پروژه ما یکسری نیازمندی داره که تو تصویر زیر می‌تونید ببینیدسیمفونی flex در لیست نیازمندی‌های پروژه در هنگام نصب افزوده می‌شود و وجود دارد.یکی از این نیازمندی ها سیمفونی flex هست، که در واقع یک پلاگین برای composer با دو قدرت باورنکردیه!قدرت باورنکردنیه اول! نام‌های مستعار در flexکه خب بهتره اول flex.symfony.com رو یه نگاهی بندازید، این آدرس لیست رسیدهای(Recipes) سیمفونی رو نشون میده، اگر تو این سایت کلمه security رو چک کنید تعدادی بسته مختلف لیست میشن که یکی از اونا sensiolabs/security-checker هست، اگر دقت کرده باشید این بسته به همراه چندتا نام مستعار اومده، وقتی شما در خواست نصب یک بسته رو با استفاده از این نام‌های مستعار میدید کار flex شروع میشه و براتون میره و بسته اصلی رو نصب میکنه، برای مثال شما نیاز به یک بسته برای ثبت لاگ های سیستمتون دارید؟ وقتشه دستور composer install logger رو بزنید یا حتی اگر لازمه که ایمیل ارسال کنید دستور composer install mailer رو بزنید و بقیه کارها رو به سیمفونی flex بسپارید.خب حالا اگر دوباره به فایل composer.json خودمون نگاه کنیم تو لیست بسته‌های مورد نیاز در زمانه توسعه می‌بینید که بسته اصلی به درستی نصب شده.لیست بسته‌های مورد نیاز در زمان توسعه پروژه،‌ بسته security-checker به درستی نصب شدهقدرت باورنکردنیه دوم! رسیدهای Flexاین قابلیت حتی به نظرم از قبلی هم خیلی بهتره! خب با توجه به این که ما از git برای مدیریت ورژن پروژه استفاده می‌کنیم به راحتی می‌تونیم با استفاده از دستور git status تغییرات اضافه شده به پروژه رو چک کنیم! بریم ببینیم این بسته نصب شده جدید چه چیزی همراه خودش آورده!تغییرات پروژه بعد از نصب بسته sec-checkerخب همونطور که میدونید تغییر تو فایل‌های composer.json و composer.lock طبیعی هستش، ولی فایل جدید symfony.lock چی هست؟ این فایل یک فایل تنظیمات جدید هست که توسط flex مدیریت میشه.تغییر بعدی اضافه شدن فایل جدید security_checker.yaml هست، این فایل توسط رسید(Recipe) تو سیستم ایجاد شده و این عالیه! بسته جدید که نصب کردیم و به همراه این فایل باعث میشه که ما یک دستور ( command ) جدید درون سیستم داشته باشیم.php bin/console security:check روش استفاده در عمل از رسیدها در سیمفونی flex رو می‌تونید ببینید! هر زمان که ما یک بسته جدید نصب می‌کنیم سعی می‌کنیم رسید اون بسته رو اجرا کنه و اگر لازم هست فایل تنظیمات،‌ ایجاد پوشه و حتی تغییر در فایل .gitignore رو برای ما به طور خودکار انجام بده! به نظر من که عالیه!یک تغییر جالب دیگه که برای ما انجام شده، اضافه شدن یک اسکریپت جدید به لیست اسکریپت‌های کامپوزر هست!با استفاده از این تغییر هر زمان که ما دستور composer install رو اجرا کنیم، security-checker به طور خودکار اجرا میشه.برای اضافه کردن رسید جدید که کارها رو به طور خودکار براتون انجام بده من ترجیح میدم که تو بخش ساخت باندل جدید به سیمفونی صبحت کنم ولی برای اطلاعات بیشتر میتونید از اطلاعات رسید‌های سیمفونی استفاده کنید. نصب توویگ (Twig)خب قبل از شروع نصب توویگ باید یک یادآوری از قسمت قبل داشته باشیم، اگر یادتون باشه کنترل‌ها باید یک آبجکت پاسخ (Response Object) از سیمفونی رو به عنوان خروجی برگردونن، حالا این پاسخ مهم نیست که یک قالب رندر شده باشه و یا یک پاسخ JSON که در نتیجه درخواست های دیتابیس ایجاد شده.اگر برنامه شما نیاز داره که کد HTML به عنوان خروجی بده، یه ابزار بسیار پر کاربرد به اسم توویگ (Twig) وجود داره.برای نصب توویگ کافیه دستور زیر رو بزنیدcomposer require twigدر ادامه بخش‌های بعدی برنامه که داریم می‌نویسیم شامل کدهای HTML و بخش‌هایی هم شامل API برای استفاده توسط جاوا اسکریپت،‌ برای همین اگر به دنبال نوشتن API با سیمفونی هستید با این سری مطالب همراه باشید.بعد از نصب سیمفونی Flex به طور خودکار تغییرات زیر رو در فایل config/bundles.php اضافه می‌کنه.اضافه شدن باندل‌های توویگ درون فایل bundles.phpتغییر بعدی اضافه شدن فایل تنظیمات توویگ در آدرس config/packages/twig.yaml به شکل زیر می‌باشد.تنظیمات پیشفرض توویگ بعد از نصب باندلهمچنین به طور پیش فرض در آدرس موجود در این فایل تنظیمات ، پوشه templates، یک قالب توویگ ایجاد میشه که در رابطه با این فایل و کار کردن با فایل‌های توویگ در قسمت‌های بعدی بیشتر صحبت می‌کنیم.ممنون که در این مطلب با من همراه بودید، منتظر نظراتتون هستم!در صفحه گیت‌هاب پروژه می‌تونید کد این بخش رو دانلود کنید.منبع: symfonycasts</description>
                <category>مرتضی کریمی</category>
                <author>مرتضی کریمی</author>
                <pubDate>Mon, 27 Apr 2020 22:04:59 +0430</pubDate>
            </item>
                    <item>
                <title>آنچه درباره سیمفونی ۴ آموختم | بخش سوم</title>
                <link>https://virgool.io/symfony/%D8%A2%D9%86%DA%86%D9%87-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%B3%DB%8C%D9%85%D9%81%D9%88%D9%86%DB%8C-%DB%B4-%D8%A2%D9%85%D9%88%D8%AE%D8%AA%D9%85-%D8%A8%D8%AE%D8%B4-%D8%B3%D9%88%D9%85-uborgfccpeyf</link>
                <description>آنچه درباره سیمفونی ۴ آموختم | بخش سومخب در ادامه قسمت قبل که نوشتن یک مسیریابی رو تو سیمفونی یاد گرفتیم تو این قسمت میخوام استفاده از روش ساده‌تر تعریف یک مسیر جدید رو آموزش بدم.قبل از شروع شما میتونید کد قسمت قبل رو به صورت زیر دریافت کنید.git clone https://github.com/mortezakarimi/symfony-learning.gitروش ساده‌تر به جای این که مسیریابی‌های سیستم رو درون فایل routes.yaml قرار بدیم اینه که شما استفاده از بسته زیر که نصب می‌کنید یک سری قابلیت‌های اضافی وارد سیستم می‌کنید. بریم نصبش کنید!composer require annotationsدر واقع بسته annotations میاد و بسته sensio/framework-extra-bundle این رو نصب می‌کنه که در ادامه راجع بهش صحبت می‌کنیم.خب حالا وارد فایل routes.yaml خودتون بشید و به شکل زیر تمام اطلاعاتش رو کامنت کنید.File Path | config/routes.yaml
#index:#    path: /#    controller: App\Controller\ArticleController::homepageحالا می‌تونید برای این که مطمئن بشید که پروژه هیچ مسیری نداره صفحه اول پروژه رو ببینید.حالا کنترلر ArticleController رو باز کنید و به شکل زیر تغییر بدید.File Path | src/Controller/ArticleController.php
... codes
 use Symfony\Component\Routing\Annotation\Route;

class ArticleController
{
    /**
     * @Route(&amp;quot/&amp;quot)
     */
    public function homepage()
    {
        ... codes
    }
}خب حالا اگر دوباره صفحه اول رو باز کنید می‌بینید که مثل قبل درست کار می‌کنه! حالا ما میتونیم مسیریابی‌های دلخواهمون رو به شکل Annotation استفاده کنیم.خب Annotation چی هست؟ در واقع کامنت‌های هستند که به صورت تنظیمات خونده میشن و در پروژه استفاده میشن.مسیریابی‌های باحال wildcardخب حالا برای این که بتونیم چیزای باحال تر پیاده کنیم مثلا ما متد جدید تو کنترلرمون تعریف می‌کنیم به اسم show() که قرار برامون اطلاعات کامل یک مقاله رو نمایش بده و ما بهش مسیر @Route(&quot;/news/why-asteroids-taste-like-bacon&quot;)میدیم.File Path | src/Controller/ArticleController.php
...code
class ArticleController
{
     ...code
    /**
     * @Route(&amp;quot/news/why-asteroids-taste-like-bacon&amp;quot)
     */
    public function show()
    {
        return new Response(&#039;Future page to show one space article!&#039;);
    }
}نتیجه این اجرا رو به صورت زیر میتونید ببینیدحالا ما اگر بخوایم بخش آخر آدرس (slug) به صورت متغییر باشه برای خبرهای مختلف باید چیکار کنیم؟به این صورت عمل می‌کنیم که why-asteroids-taste-like-bacon رو حذف می‌کنیم و {slug} بجای اون بخش قرار می‌دیم. تو کد زیر میتونید تغییرات رو ببینید!File Path | src/Controller/ArticleController.php...codeclass ArticleController{     ...code    /**
     * @Route(&amp;quot/news/{slug}&amp;quot)
     */
    public function show($slug)
    {
        return new Response(sprintf(
            &#039;Future page to show the article: &amp;quot%s&amp;quot&#039;,
            $slug
        ));
    }}نکته: در قسمت {slug} شما می‌تونید هر نامی که دوست داشته باشید قرار بدید ولی باید دقت کنید که  با متغییر ورودی متدتون باید همنام باشه که بتونید مقدارش رو در دسترس داشته باشید.کد این بخش هم در این آدرس در دسترس هست. با نظراتتون ایده‌های جدیدتون برای استفاده بهتر رو با من به اشتراک بزارید.</description>
                <category>مرتضی کریمی</category>
                <author>مرتضی کریمی</author>
                <pubDate>Sat, 18 Apr 2020 11:13:09 +0430</pubDate>
            </item>
                    <item>
                <title>آنچه درباره سیمفونی ۴ آموختم | بخش دوم</title>
                <link>https://virgool.io/symfony/%D8%A2%D9%86%DA%86%D9%87-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%B3%DB%8C%D9%85%D9%81%D9%88%D9%86%DB%8C-%DB%B4-%D8%A2%D9%85%D9%88%D8%AE%D8%AA%D9%85-%D8%A8%D8%AE%D8%B4-%D8%AF%D9%88%D9%85-p4dmrehocvjv</link>
                <description>آموزش ساختار فایل، مسیریابی و کنترلرخب تو این بخش که در ادامه بخش اول که یک پروژه سیمفونی ساختیم، میخوایم در رابطه با ساختار فایل‌های سیمفونی صحبت کنیم و این که چطوری یک کنترلر (Controller) و مسیریابی (Route) بنویسیم برای یک پروژه سیمفونی.زمانی که شما پوشه پروژه رو باز کنید با ساختار پوشه‌های زیر رو به رو میشیدbinconfigpublicsrcvarvendorخب به ترتیب از بالا به پایین شروع می‌کنیم به تعریف هر پوشهbinاین پوشه داخل فایل‌های اجرایی وجود دارن که می‌تونید با استفاده از ترمینال از این دستورات استفاده کنید که در ادامه ساخت پروژه از معروف‌ترین کامند فایل این پوشه زیاد استفاده می‌کنیم که فایل console هست. پشنهاد می‌کنم که یک بار دستور php bin/console رو وارد کنید تا ببینید چه قابلیت‌های بهتون میده فایل console موجود در این پوشهconfigاین پوشه بخش بسیار مهمی هست برای این که داخل این پوشه فایل‌های تنظیمات پروژه هست و شما همونطور که در ادامه این سری آموزش‌ها می‌بینید، می‌تونید تنظیمات ایمیل، اضافه کردن کتابخونه، تنظیمات سیستم برای محیط توسعه (Development) و یا عمل آوری (Production)  و ... تغییر بدید.publicاین پوشه رو میشه تو فریمورک‌های دیگه هم دید و فایل‌های عمومی پروژه که قرار در دسترس همه کاربرها باشه قرار داره وجود داره برای مثال فایل‌های Assets مثل تصاویر و فونت‌ها اینجا هستند.srcخب اینجا دیگه همه چیزه تقریبا این پوشه شامل تمام کنترل‌ها، اینتیتی‌ها ( تو فریمورک Yii میگفتیم مدل) و... وجود داره که اکثر کارهای توسعه رو ما روی فایل‌های داخل این پوشه انجام میدیم.varاین پوشه محل نگهداری فایل‌های متغییرمونه که توسط سیستم ایجاد میشن معمولا برای مثلا فایل‌های لاگ (log) و کش (Cache) داخل این پوشه ایجاد و نگداری میشن.vendorاین پوشه توسط composer نگهداری میشه و شامل فایل‌های کتابخونه‌های مختلف پروژه هست که اگر با یک فریمورک کار کرده باشید حتما این فولدر به چشمتون خورده.بریم اول صفحه‌مون رو تو سیمفونی بسازیمخب شاید یکی از دلایلی که من خیلی بیشتر از سیمفونی نسبت به لاراول و Yii استقبال کردم این بود باشه که همه چیز رو به یک روش خیلی ساده خودش برات انجام میده،‌ چطوری؟ بیایید ببینیم!خب اول یکمی توضیح بدم که روت چیه،‌ در حقیقت مسیریابی نوشته می‌شه که فریمورک بفهمه ما الان که برای این URL خاص درخواست دادیم این درخواست ما رو به کی برسونه؟ خب پس ما برای این نیاز داریم که مسیریابی‌های مختلف رو داشته باشیم. اول بریم روش سخت نوشت مسیریابی رو یاد بگیریم بعدش روش آسونش رو هم  میگم.خب اول باید فایل اصلی مسیریابی تو آدرس config/routes.yaml رو باز کنید. کدی مشابه کد زیر می‌بینید:#index:
#    path: /
#    controller: App\Controller\DefaultController::indexاول باید این خطوط رو با حذف # از اولش، از حالت کامنت بردارید تا فعال بشن حالا این خطوط چی میگن؟ میگن که اگر درخواستی اومد که آدرس / رو میخواست برو و متد index() رو از کلاس DefaultController اجرا کن. البته ما برای این پروژه DefaultController رو به ArticleController تغییر میدیم و  همچنین index رو به  homepage که کد نهایی به شکل زیر میشه:index:
    path: /
    controller: App\Controller\ArticleController::homepageخب! اولین مسیریابمونم نوشتیم ولی خب هنوز کنترلی براش وجود نداره! پس بریم کنترل رو هم بسازیم!برای نوشت کنتلر برید تو مسیر src/Controller و یک فایل جدید به اسم ArticleController.php بسازیدنکته: اگر از PhpStorm استفاده می‌کنید احتمالا تشخیص داده که پروژه شما از کامپوزر استفاده می‌کنه و اگر فعال کرده باشید می‌تونید با استفاده از کلیک راست روی پوشه src/Controller یک کلاس php ایجاد کنید که خودش به طور خودکار namespace رو براتون قرار بده، ولی اگر هم ندارید میتونید ادامه این آموزش رو همراه باشید راه‌های ساده‌تر هم وجود داره!بعد از ساخت کلاس یک متد جدید به صورت عمومی درونش قرار بدید به نام homepage که در نتیجه کد داخل کلاستون مشابه کد زیر میشه:&lt;?php

namespace App\Controller;

class ArticleController
{
    public function homepage()
    {

    }
}خب حالا تقریبا همه چیز آمادس فقط یک قانون وجود داره! این که شما باید داخل متد‌های کنترلرتون باید حتما یک پاسخ (response) برگردونید تا بتونه کار کنه، این کار رو می‌تونید با استفاد از ساخت یک نمونه از کلاس Response انجام بدید که در نهایت نتیجه نهایی کنترلتون به شکل زیر میشه:&lt;?php

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

class ArticleController
{
    public function homepage()
    {
        return new Response(&#039;OMG! My first page already! WOOO!&#039;);
    }
}خب شاید براتون عجب باشه که این خط زیر چیه من اضافه کردمuse Symfony\Component\HttpFoundation\Response;این خط به php میگه که کلاس Response رو که من دارم استفاده می‌کنم برو از این آدرس بیار نه از یک آدرس اشتباهی، این قسمت رو بعدا بیشتر باهاش آشنا میشم و خیلی استفاده می‌کنیم.حالا اگر پروژه رو دوباره باز کنید و به صفحه اول برید با تصویر زیر رو به رو میشید:اولین کنترل موفق برای سیمفونیخب حالا روش سخت نوشت مسیریابی و کار کردن با کنترل رو یاد گرفتید، روش آسونش رو در آموزش بعدی توضیح میدم.راستی! کد هر قسمت از آموزش رو می‌تونید تو گیت‌هاب من داشته باشید که برای هر آموزش یک تگ قرار دادم تا بتونید کد هر قسمت از آموزش رو جدا داشته باشید.کد این قسمت رو می‌تونید از این جا ببینید. با نظراتتون خوشحالم کنید!قسمت بعدی این آموزش رو که در رابطه با نحوه آسان نوشتن مسیریابی و دریافت اطلاعات از مسیر هست رو در اینجا بخونید.</description>
                <category>مرتضی کریمی</category>
                <author>مرتضی کریمی</author>
                <pubDate>Sun, 12 Apr 2020 08:02:18 +0430</pubDate>
            </item>
                    <item>
                <title>آنچه درباره سیمفونی ۴ آموختم | بخش اول</title>
                <link>https://virgool.io/symfony/%D8%A2%D9%86%DA%86%D9%87-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%B3%DB%8C%D9%85%D9%81%D9%88%D9%86%DB%8C-%DB%B4-%D8%A2%D9%85%D9%88%D8%AE%D8%AA%D9%85-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84-oefnosxnux11</link>
                <description>سلام PHP | تصویر گرفته شده توسط KOBU Agency اولین آشنایی من با فریمورک سیمفونی به حدود ۷ ماه پیش، زمانی که کارمو تو شرکت باگلوس شروع کردم،برمی‌گرده. کار با فریمورک سیمفونی، باعث شد  بعد از ۴ سال کار با فریمورک Yii به یک دنیای جدید مهاجرت کنم! برای کسی که در برابر تغییر به لاراول کلی مقاومت کرده این بار دیدن این فریمورک و کار کردن باهاش باعث شده بود خیلی راحت با فریمورک جدید ارتباط برقرار کنه!برای این که این حس خوبمو باهاتون به اشتراک بزارم میخام قدم به قدم بر اساس سایت سیمفونی کست سری مقالاتی رو شروع به نوشتن می‌کنم تا شما رو با خودم همراه کنم.برای شروع این اطلاع رو میدم که این سری مقالات رو که در ادامه می‌خونید بر اساس آخرین نسخه با پشتیبانی طولانی مدت می‌نویسم و پیشنهاد می‌کنم برای این که اطلاعات بیشتری در مورد فریمورک‌های PHP بدست بیارید حتما یک سری به سایت http://www.phpbenchmarks.com بزنید.پیش نیازهای شروعمن خودم با اوبونتو کار می‌کنم ولی شما می‌تونید روی ویندوز هم کار کنید. من با این پیش که شما روی سیستمتون PHP رو نصب دارید توضیحات ادامه رو میدم. قبل شروع کار با فریمورک سیمفونی لازمه که کامپوزر روی سیستمتون نصب باشه برای این کار می‌تونید به سایت https://getcomposer.org برید و از راهنمای نصب ساده که تو این سایت قرار داره استفاده کنید ولی اگر بازهم سوالی داشتید حتما تو کامنت بپرسید.مرحله بعد که اینه ک دستور symfony رو نصب کنید. چطوری؟ می‌تونید از بخش دانلود سایت سیمفونی کمک بگیرید و اگر لینوکسی هستید می‌تونید دستور زیر رو تو ترمینالتون وارد کنید.wget https://get.symfony.com/cli/installer -O - | bashاین دستور به طور خودکار یک فایل رو دانلود می‌کنه که اسکریپت نصب سیمفونی هست و بعد شروع می‌کنه به نصب سیمفونی. که تصویری مثل تصویر زیر رو احتمالا مشاهده می‌کنید.نصب کامند سیمفونی با استفاده از اسکریپت خودکار نصبهمونطور تو انتهای تصویر هم می‌بینید برای این که دستور رو بتونید هر جایی از سیستم اجرا کنید یا باید تو لیست Path سیستم قرار بدید یا این که اون رو به پوشه bin کاربرهای سیستمتون انتقال بدید که من ترجیحم انتقال به پوشه کاربرانم هست.برای این که چک کنید به درستی نصب شده می‌تونید دستور زیر رو اجرا کنید.symfony -vکه اگر نصب درست انجام شده باشه نتیجه مشابه زیر رو می‌تونید ببینیدنتیجه اجرای دستور symfony -vنصب سیمفونی ۴.۴برای نصب نسخه ۴.۴ سیمفونی که یک نسخه با پشتیبانی بلند مدت هست و می‌تونید از دو روش استفاده کنید.با استفاده از composer composer create-project symfony/skeleton the_spacebar &#039;4.4.*&#039;با استفاده از کامند symfonysymfony new the_spacebar --version=ltsبعد از اجرای هر کدوم از دستور‌های بالا یک پروژه جدید در پوشه the_spacebar درست میشه. https://asciinema.org/a/314459?t=1:10 این دستور به طور خودکار پروژه symfony/skeleton رو کپی می‌کنه و در پوشه مورد نظر قرار می‌ده سپس دستور  composer install  رو به طور خودکار اجرا می‌کنه تا تمام پیش‌نیازهای پروژه به طور خودکار نصب شوند.برای اجرای پروژه هم فقط کافیه برید تو پوشه پروژه و دستور زیر رو وارد کنیدsymfony server:startو حالا شما یک پروژه سیمفونی روی سیستمتون اجرا کردید برای مشاهده سایت بعد از اجرا دستور بالا می‌تونید به آدرس http://127.0.0.1:8000 برید که با صفحه‌ای مشابه صفحه زیر مواجه می‌شید.صفحه استارت پروژه سیمفونی به صورت مینیمالاین تازه شروع کاره و از الان به بعد قراره کلی چیزای دیگه یاد بگیریماگر دوست دارید زودتر یادبگیرید و زبان انگلیسیتون خوبه می‌تونید از سایت سیمفونی‌کست خودتون سریع‌تر یاد بگیرید.منتظر نظراتتون هستمقسمت بعدی این آموزش رو که در مورد ساخت کنترل‌ها و مسیریابی در سیمفونی هست رو در اینجا میتونید بخونید.منبع: SymfonyCast</description>
                <category>مرتضی کریمی</category>
                <author>مرتضی کریمی</author>
                <pubDate>Tue, 31 Mar 2020 15:23:17 +0430</pubDate>
            </item>
            </channel>
</rss>