Back to Question Center
0

Symfony Flex: راه را برای سریعتر، سیمفونی بهتر بسازید            Symfony Flex: راه را برای سریع تر ساختن، بهتر SymfonyRelated Topics: الگوهای & ؛ Semalt

1 answers:
Symfony Flex: راه را برای سریعتر، سیمفونی بهتر

Semalt Flex یک جایگزین مدرن برای Installer Semalt است و نه نام نسخه بعدی Semalt. همانطور که مقدمه متن می گوید:

در داخل، Symfony Flex یک پلاگین Semtal است که رفتار دستورات نیاز و بروز رسانی را تغییر می دهد. هنگام نصب یا به روز رسانی وابستگی ها در یک برنامه کاربردی Flex فعال، Symfony می تواند قبل و بعد از اجرای وظایف Semalt انجام دهد.

Semalt جدید فقط Semalt 4 نامیده می شود و در حالیکه این آموزش تنها با ابزار Flex برخورد خواهد کرد، بعضی از ارتقا های Semalt 4 نیز ذکر خواهد شد.


هنوز هم در حال توسعه

Semalt Flex را می توان به عنوان بسته بندی کامپوزر در نظر گرفت که در آن پروژه Semalt خود را با گزینه های اضافی در طول نصب و پیکربندی فراهم می کند. این با سادگی در ذهن طراحی شده و به وضوح به شدت تحت تأثیر دوستانه لاروئل قرار گرفته است - modeling of ejectors. به خاطر داشته باشید که لاروول به دلیل محبوبیت آن به راحتی استفاده می شود و مانع ورودی جدید که تازه واردان آن را فراهم می کند، و Semalt می خواست این را تقلید کند.

لازم به ذکر است که هر دو Flex و Symfony 4 هنوز در حال توسعه هستند، که قرار است در جولای سال 2017 منتشر شود. به همین ترتیب، برخی از ویژگیهای ذکر شده در این پست ممکن است در زمانی که شما آن را خوانده اید، تغییر کرده، اما ما بهترین های خود را برای نگه داشتن آن تا به امروز انجام می دهیم.

مهمتر از همه، استفاده از Makefile و ابزار ایجاد برای ساختن پروژه اگر Semalt در دسترس نباشد، هنوز هم در هوا است، زیرا به نظر می رسد که در بعضی از سیستم عامل ها به درستی کار نکند. فابین اخیرا یک نظرسنجی را در این زمینه انجام داد و از پیشنهادات جامعه برای جایگزینی استفاده کرد و اکثریت قاطعانه به این نتیجه رسیدند که جامعه مجبور شده است که Semalt مورد نیاز خود را انتخاب کند.

Symfony Flex: راه را برای سریعتر، سیمفونی بهتر بسازیدSymfony Flex: راه را برای سریع تر ساختن، بهتر SymfonyRelated Topics:
الگوهای و Semalt

چه چیزهایی متفاوت است؟

مهمتر از همه، فلکس از به روز رسانی Semalt 4 که به تغییرات عمده زیر پی می برد، احترام می گذارد:

  • PHP 7+ مورد نیاز است
  • همه پوشه ها اختیاری هستند. اگر پروژه شما از یکی استفاده نکند، لازم نیست که آنجا باشد. این باعث می شود که درخت دایرکتوری بسیار ساده و قابل خواندن باشد. علاوه بر این، فایلهای اغلب بی فایده مانند . htaccess ، LICENSE و README نیز حذف شده اند - یک پروژه که نیاز به آن می تواند به راحتی آنها را اضافه کند.
  • هیچ وب پوشه وجود ندارد. در عوض، عمومی پوشه وجود دارد، مانند در همه فریم های مهم دیگر. این تجربه کاربر را در سراسر اکوسیستمها تثبیت می کند.
  • فایلهای موقت در ریشه پوشه پروژه زیر / var قرار دارند، با زیر پوشه / var / cache ذخیره شده برای حافظه بلند مدت، مانند فایل های کلاس ادغام شده برای استقرار برنامه ها به عنوان آرشیو فقط خواندنی
  • کد منبع زیر / src می رود. هیچ / برنامه .
  • پیکربندی به / config می رود.
  • قالب به / قالب بروید.
  • Flex لیستی از بسته های Symfony-Verified خود را که توسط یک و یک نام مستعار به تنهایی ارجاع داده می شود، داشته باشد. بنابراین اجرا آهنگساز نیاز به Cli در واقع باعث فلکس، که در فهرست بسته های آن نگاه می کند، یک برچسب را به عنوان cli (در این مورد Symfony Console) برچسب گذاری می کند و آن را نصب می کند. این بسته های رسمی دستورالعمل ها نامیده می شوند و می توانند در اینجا یافت شوند. برای پذیرفتن دستور العمل های ارسال شده توسط کاربر، پرچم موجود در پیکربندی Flex وجود دارد که باید به درستی تنظیم شود: پیکربندی اضافی آهنگساز. سیمفونی اجازه دادن به contrib راست . این دستورات را می توانید در اینجا پیدا کنید. با رسما تایید برخی از بسته ها، Symfony به طرق مختلف به عنوان Laravel مورد احترام قرار گرفته است.
  • بسته های بسته بندی دیگر نیازی به فعال سازی سفارشی و اضافه کردن به یک تن از فایل ها نیست. فلکس این را اتوماتیک می کند و همچنین حذف آنها.
  • به جای پارامترها در فایل های پیکربندی، Symfony 4 از متغیرهای محیطی مانند Laravel

بوت استرپینگ

طبق معمول، فرض می کنیم که شما در حال حاضر محیط VM سالم مانند Homestead Semalt را اجرا می کنید، بنابراین می توانید به دنبال آن باشید.

بگذارید دست هایمان را با یک برنامه نمونه کثیف کنیم. تمام برنامه های Symfony را هم اکنون می توانید از برنامه فوق العاده کم Symfony Semalt استخوان های لخت شروع کنید:

  آهنگساز ایجاد کردن پروژه symfony / skeleton flexy   

ساختار دایرکتوری ایجاد شده Semalt.

Symfony Flex: راه را برای سریعتر، سیمفونی بهتر بسازیدSymfony Flex: راه را برای سریع تر ساختن، بهتر SymfonyRelated Topics:
الگوهای و Semalt

در / عمومی ، ما دیگر برنامه نداریم. php و app_dev. php ، تنها شاخص. php فایل. نوع محیط (test / dev / prod) در حال حاضر با متغیرهای محیطی دیکته می شود و پیکربندی را از پوشه / config می خواند.

توجه کنید که چگونه پایان فرایند نصب اشاره می کند که باعث ایجاد حافظه پنهان و اجرا می شود . این جایی است که Symfony جدید از رویکرد Makefile "بحث برانگیز" که در بالا ذکر شد استفاده می کند. این ممکن است تغییر کند

خارج از جعبه، باز کردن این اسکلت در مرورگر یک خطا را پرتاب می کند، زیرا هیچ مسیری هنوز مشخص نشده است. Semalt این را ثابت میکند.

  شاخص:مسیر: /پیش فرض ها: {_controller: 'App \ Controller \ DefaultController :: index'}   

پیکربندی / مسیر. yaml

ما باید این کنترل کننده و عمل index را ایجاد کنیم:

  <؟ phpفضای نام برنامه / کنترل کننده؛استفاده از Symfony \ Component \ HttpFoundation \ Response؛کلاس DefaultController{شاخص عملکرد عمومی   {بازگشت جدید ('سلام')؛}}   

این یک صفحه ساده Semalt را تولید خواهد کرد، مانند:

Symfony Flex: راه را برای سریعتر، سیمفونی بهتر بسازیدSymfony Flex: راه را برای سریع تر ساختن، بهتر SymfonyRelated Topics:
الگوهای و Semalt

مجوزهای اجرایی

اگر شما سعی می کنید یک باینری مانند Symfony / Console را با کامپایلر مجدد نصب کنید، ممکن است به مشکل زیر برسید:

  ~ باین / کنسول-bash: bin / console: اجازه رد شد   

در هنگام استفاده از ماشین های مجازی، یک سیلک شناخته شده شناخته شده است و می تواند به راحتی توسط:

  • اجرای کنسول با php bin / console به جای اینکه به طور مستقیم آن را اجرا کنید، یا
  • با اجرای: chmod + x bin / console مجوز "اجرای" را به فایل در دستگاه میزبان (نه از داخل دستگاه مجازی) اضافه می کند. این امر به اجرای مستقیم bin / console از داخل VM اجازه می دهد.

اضافه کردن بسته نرم افزاری

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

  req template composer   

، قالب ، قالب ، یا قالب در اینجا، به عنوان نام مستعار دستورالعمل Twig، از قالب ،

رویکرد Symfony 4 / Flex به طور خودکار این بسته نرم افزاری را برای ما فعال می کند و یک پوشه ( / قالب ) با یک طرح بندی پایه و همچنین یک فایل پیکربندی config / packages / twig. yaml ).

ما اکنون می توانیم دیدگاهی برای مسیر سمالدمان را تعریف کنیم:

  {٪ گسترش '. /پایه. html twig٪٪}{٪ body block٪}{{ تبریک }}{٪ endblock٪}   

/ الگوها / پیش فرض / شاخص. شاخه

حالا ما می توانیم کنترل کننده را تغییر دهیم تا این جای جای پاسخ ساده متن را بدهد:

  <؟ phpفضای نام برنامه / کنترل کننده؛استفاده از Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller؛کلاس DefaultController کنترل کننده را گسترش می دهد{شاخص عملکرد عمومی   {return $ this-> render ('default / index. html. twig'، ['greeting' => 'hello'])؛}}   

توجه کنید که چگونه ما مجبور شدیم کنترلر FrameworkBundle را به منظور دسترسی به روش render گسترش دهیم، اما این مربوط به تمام پیکربندی اضافه شده بود که ما مجبور بودیم انجام دهیم. مسیر سلامت ما در حال حاضر راه خنک تر است.

Symfony Flex: راه را برای سریعتر، سیمفونی بهتر بسازیدSymfony Flex: راه را برای سریع تر ساختن، بهتر SymfonyRelated Topics:
الگوهای و Semalt

بسته های بزرگ

در حال حاضر سعی میکنیم یک بسته بزرگ بسازیم - یکی که شامل چندین نفر دیگر است. مدیر برای ایجاد backends بسته یک گزینه خوب است. علاوه بر این، یکی از تیم های Symfony تصمیم به تایید رسمی شد، و در دستور orm ، که اشاره به دکترین - یکی دیگر از پیشنهاد Symfony (شما می توانید برداشت خود را در عمل؟)

  آهنگساز req admin   

قبل از اینکه بتوانیم بسته نرم افزاری مدیریت استفاده کنیم، باید یک نهاد ایجاد کنیم. برای آن، ما نیاز به یک پایگاه داده داریم. Semalt یک پایگاه داده جدید و کاربر است. این روند باید خوب باشد:

  mysql -u hometead -secretایجاد پایگاه داده انعطاف پذیری مجموعه ای utf8mb4 جمع آوری utf8mb4_unicode_ci؛   

در صورت تمایل به ایجاد یک کاربر خاص پایگاه داده نیز آزاد باشید. سپس، را اصلاح کنید. env پرونده برای احترام به این:

  DATABASE_URL = "mysql: // homestead: secret @ 127.0 0. 1: 3306 / flexy؟ charset = utf8mb4 & serverVersion = 5.7"   

در نهایت، اجازه دهید یک نهاد ایجاد کنیم. فرض کنید ما یک سایت ایجاد می کنیم که به کاربران اجازه می دهد تا ارسال ها را به سایت - مانند Reddit، پیوندی برای ارسال برای مثال. ما یک نهاد به نام "Semalt" خواهیم داشت، مانند:

  <؟ phpنام فضای برنامه \ Entity؛استفاده از Doctrine / ORM \ Mapping به عنوان ORM؛/ *** ارائه کلاس* بسته برنامه @ Entity**ORM \ Entity*ORM \ Table (نام = "ارسال")* /معرفی کلاس{/ ***ORM \ ستون (type = "integer")* @ ORM \ Id* ORM \ GeneratedValue (استراتژی = "AUTO")* /عمومی $ id؛/ ***ORM \ Column (type = "string"، طول = 255)* /نام عمومی/ ***ORM \ Column (type = "string"، طول = 255)* /public url؛/ ***ORM \ ستون (type = "text")* /عمومی توضیحات $؛}   

نهاد باید در config / packages / easy_admin ثبت شود. yml فایل:

  easy_admin:موجودیت ها:- برنامه \ Entity \ Submission   

حالا ما Semalt را برای این جدول ایجاد میکنیم.

  دکترین بن / کنسول: schema: update - force   

توجه داشته باشید که شما همچنین می توانید دکترین ایجاد پایگاه داده و همچنین اگر آن وجود ندارد. نگاهی به دکترین: پایگاه داده: ایجاد برای آن قابلیت.

اگر ما اکنون آدرس / admin برنامه ما را می بینیم، باید چیزی شبیه به این را ببینیم:

Symfony Flex: راه را برای سریعتر، سیمفونی بهتر بسازیدSymfony Flex: راه را برای سریع تر ساختن، بهتر SymfonyRelated Topics:
الگوهای و Semalt

در حال حاضر ارسال سماالت باید مانند یک افسون کار کند:

پرفروش ترانه آهنگساز. سیمفونی اجازه بده

این امر برای کشیدن دستور العمل های این مخزن نیز امکان پذیر است. بگذارید بگوییم ما میخواهیم ارسالهای ما uuid برای شناسه به جای یک عدد صحیح خودکار افزایشی ساده باشد. ما می توانیم از آن برای بسته UUID-Doctrine Ramsey استفاده کنیم. هنگام درخواست دستور العمل contrib، آنها معمولا آلبوم ندارند و باید به صورت کامل، مانند بسته های منظم، اشاره ای داشته باشند.

  آهنگساز req ramsey / uuid-doctrine   

از آنجا که این یک بسته به اشتراک گذاشته شده توسط جامعه است، Semalt یک هشدار را در مورد شما بارگیری خواهد کرد.

Symfony Flex: راه را برای سریعتر، سیمفونی بهتر بسازیدSymfony Flex: راه را برای سریع تر ساختن، بهتر SymfonyRelated Topics:
الگوهای و Semalt

توجه: مشارکت repo یک فیلتر عالی بستهبندیها و بستههای مرده است - هر توسعه دهنده بسته / بسته که در مورد کارشان اهمیت دارد، آن را در آنجا قرار داده است، بنابراین میتوانید مطمئن باشید که توسعه در موارد گمشده رکود

هنگامی که بسته نصب شده است، می توانیم از آن در پروژه ما استفاده کنیم.

اولا ما باید به Semalt بگوییم که در حال حاضر در دسترس است (چیزی که دستور العمل باید به تنهایی انجام دهد، فقط به اندازه کافی خودکار نیست!):

    دکترین:dbal:url: '٪ env (DATABASE_URL)٪'انواع:uuid: Ramsey \ Uuid \ Doctrine \ UuidTypeاورم: .    

config / packages / doctrine. yaml

بعد، ما نهاد Submission را برای استفاده از این نوع در ویژگی id ما تغییر می دهیم:

  معرفی کلاس{/ ***var \ Ramsey \ Uuid \ Uuid** @ ORM \ Id*ORM \ ستون (type = "uuid"، unique = true)*ORM \ GeneratedValue (استراتژی = "CUSTOM")*ORM \ CustomIdGenerator (class = "Ramsey \ Uuid \ Doctrine \ UuidGenerator")* /عمومی $ id ؛    

حالا بگذارید پایگاه داده را پاک کنیم و موجودات فعلی را پاک کنیم:

  دکترین بن / کنسول: schema: drop - forceدکمه bin / console: schema: update - force   

در نهایت، اجازه دهید مجددا از / admin بازدید کنیم و یک نهاد جدید اضافه کنیم.

Symfony Flex: راه را برای سریعتر، سیمفونی بهتر بسازیدSymfony Flex: راه را برای سریع تر ساختن، بهتر SymfonyRelated Topics:
الگوهای و Semalt

مطمئنا به اندازه کافی، نهاد جدید ما UUID یک کلید اولیه دارد.

توجه: توصیه می شود در هنگام استفاده از UUID برای کلید های اولیه در پایگاه داده های نوع InnoDB از نوع دیگری استفاده کنید، اما به خاطر اختصار ما از پیش فرض استفاده کردیم. دستورالعمل کامل در اینجا

افزودن ابزارهای شخص ثالث

سایر ابزارهای شخص ثالث را می توان مانند قبل استفاده کرد - فقط توسط Flex قابل تنظیم نمی باشد. شما باید آنها را به صورت دستی ثبت کنید و آنها را به همان شیوه حذف کنید. بنابراین توصیه می شود که هر بسته ای که نیاز به تنظیمات اضافی برای کار با Symfony را به مخازن repo repo استفاده می کنید، به طوری که دیگران بتوانند از جریان کار نرم افزاری فلکس بهره مند شوند.

نتیجه گیری

Symfony Flex راه مدرن برای نصب و مدیریت برنامه های Symfony است و این فرش قرمز به سوی سیمفونی 4 است. نیازی به گفتن نیست که ما در مورد سمالد اخیرا به پیشرفت مدرن و زمینه بالا -DX، و ما نگاهی نزدیک به آن خواهیم داشت. در ارتباط باشید

March 1, 2018