۱۴۰۰/۰۴/۰۴

نحوه سازماندهی فایل ها در سیمفونی

ساختار فایل ها در سیفونی ۱۳۹۸/۰۶/۲۳

در نسخه استاندار سیمفونی Symfony Standard Edition بطور کلی سه محیط dev, prod و test. تعریف شده است.برای انتخاب هر محیط تنظیم فایل باید انرا در AppKernal انتخاب کنیم.برای انتخاب فایل های پیکردبندی در هر محیط از متد registerContainerConfiguration در کلاس appKernal آنرا انتخاب میکنیم.

// app/AppKernel.php
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\HttpKernel\Kernel;
class AppKernel extends Kernel
{
    // ...
    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load($this->getProjectDir().'/app/config/config_'.$this->getEnvironment().'.yml');
    }
}

 متد load فایل  app/config/config_dev.yml در محیط dev یا توسعه بارگیری میکند و بعد از ان این فایل ,فایل app/config/config.yml. را بارگیری میکند.

با توجه به این موضوع  بطور پیش فرض ساختار فایل ها و پوشه ها در سیموفنی به شکل زیر است .

 

your-project/
├─ app/
│  ├─ ...
│  └─ config/
│     ├─ config.yml
│     ├─ config_dev.yml
│     ├─ config_prod.yml
│     ├─ config_test.yml
│     ├─ parameters.yml
│     ├─ parameters.yml.dist
│     ├─ routing.yml
│     ├─ routing_dev.yml
│     └─ security.yml
├─ ...

این ساختار به دلیل سادگی و عدم پیچیدگی های خاص بصورت پیشفرض انتخاب شده اما مانند سایر ویژگی ها در فریم ورک سیمفونی میتوانید آنرا شخصی سازی کنید.

دایرکتوری های مختلف در هر محیط سیموفنی

فایل های با پسوند _prod یا _dev  را متوانید در پوشه هایی با همان نام قرار دهید .بطور مثال فایل ها با پسوند _dev  در دایرکتوری dev و فایل ها با پسوند _prod در دایرکتوری prod قرار دهید.

your-project/
├─ app/
│  ├─ ...
│  └─ config/
│     ├─ common/
│     │  ├─ config.yml
│     │  ├─ parameters.yml
│     │  ├─ routing.yml
│     │  └─ security.yml
│     ├─ dev/
│     │  ├─ config.yml
│     │  ├─ parameters.yml
│     │  ├─ routing.yml
│     │  └─ security.yml
│     └─ prod/
│        ├─ config.yml
│        ├─ parameters.yml
│        ├─ routing.yml
│        └─ security.yml
├─ ...

برای اینکار کد متد registerContainerConfiguration را در appKernal تغییر دهید.

// app/AppKernel.php
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\HttpKernel\Kernel;
class AppKernel extends Kernel
{
    // ...
    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load($this->getProjectDir().'/app/config/'.$this->getEnvironment().'/config.yml');
    }
}

بعد از آن باید مطمئن باشید هر config.yml مربوط به هر محیط فایل های پیکربندی را بارگیری میکند.بعنوان مثال در محیط توسعه app/config/dev/config.yml تنظیمات را به شکل زیر اعمال کنید.

# app/config/dev/config.yml
imports:
    - { resource: '../common/config.yml' }
    - { resource: 'parameters.yml' }
    - { resource: 'security.yml' }
# ...

پیکربندی فایل های تنظیمات سراسری در سیموفنی

بعضی از توسعه دهنگان بخاطر رعایت مسائل امینتی ترجیح میدهند فایل های اصلی تنظیمات مانند پارامتر در خارج از سرویس هاست جاری ذخیره شوند .بطور متال فرض کنید پیکربندی اتصال به پایگاه داده خاصی در فایل parameters.yml  خارج از میزبان کنونی ذخیره کرده اید ..شما میتوانید این فایل را از هر مکانی بارگیری کنید.

# app/config/config.yml
imports:
    - { resource: 'parameters.yml' }
    - { resource: '/etc/sites/mysite.com/parameters.yml' }
# ...

در صورتی که به هر دلیلی فایل parameters.yml که خارج از میزبان ذخیره شده لود نشود برای جلوگیری از بروز خطا میتوانید از آپشن ignore_errors استفاده کنید.و آنرا در حالت true قرار دهید.

# app/config/config.yml
imports:
    - { resource: 'parameters.yml' }
    - { resource: '/etc/sites/mysite.com/parameters.yml', ignore_errors: true }
# ...

همانطور که دیدید روش های مختلفی برای سازماندهی فایل های پیکر بندی وجود دارد .میتوانید این موارد را انتخاب کنید و یا حتی روش دلخواهی برای سازماندهی فایل ها ایجاد کنید.خودتان را به نسخه پیش فرض محدود نکنید.همچنین برای سفارشی سازی ساخنار پوشه ها می توانید این مقاله تغییر ساختار پیش فرض پوشه های در سیفونی را بخوانید

 


رای :

Symfony

ارسال نظر
Copyright © All right reserved.