لنتحدث عن كيفية إيقاف النسخ واللصق بين المشاريع ونقل الشفرة إلى حزمة مكون إضافي symfony 5. يمكن إعادة استخدامها. ستؤدي سلسلة من المقالات التي تلخص تجربتي مع الحزم عمليًا إلى إنشاء الحد الأدنى من الحزم وإعادة صياغة التطبيق التجريبي إلى الاختبارات ودورة إصدار الحزمة.
في الجزء الأول:
- لماذا الحزم مطلوبة؟
- مشروع مثال: التقويم
- تخصيص البيئة: طريقتان للتطوير
- إنشاء حزمة الحد الأدنى
- ربط حزمة بمشروع
ما هي الحزمة ولماذا هي ضرورية؟
ستحتاج إلى حزمة Symfony Bundle حينها (وعندها فقط) عندما تتعب من نسخ ولصق كود من المشروع إلى المشروع والتفكير في إعادة استخدامه. عاجلاً أم آجلاً ، يأتي الفهم بأنه من الملائم أكثر عزل التعليمات البرمجية إلى مكون إضافي قابل لإعادة الاستخدام. حزمة Symfony - هذه وحدة في نظام Symfony البيئي.
الحزمة هي حزمة من كود PHP القابل لإعادة الاستخدام على المنشطات Symfony Framework.
تختلف الحزم عن حزم PHP العادية باستخدام المكونات والاتفاقيات المقبولة عمومًا التي تبسط التكامل مع تطبيق Symfony. من خلال اتباع اصطلاحات تسمية وهياكل برمجية خاصة بالنظام البيئي ، يمكن للحزم الاتصال والتكوين والتوسيع تلقائيًا في تطبيق مضيف Symfony. تتصل الحزم بالمشروع من خلال مدير التبعية composer
.
, — . , DDD- .
Example Project: Calendar
.

.
, . . , . - , .
, 10 .
: .
, , 12 .
, .
, , , . , , , composer update
.
.
README.md
.
:
.
, ?
— , File -> New... -> Symfony Project
. -, .
2 :
, Symfony . , .
, . , ./bundles
.
, .
./bundles
CalendarBundle
,
:
src/CalendarBundle.php
composer.json
2 !
composer.json
composer.json
:
{
"name": "bravik/calendar-bundle",
"version": "0.1.0",
"type": "symfony-bundle",
"description": "Symfony bundles tutorial example project",
"license": "proprietary",
"require": {
"php": "^7.3"
},
"require-dev": {
},
"config": {
"sort-packages": true
},
"autoload": {
"psr-4": {
"bravik\\CalendarBundle\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"bravik\\CalendarBundle\\Tests\\": "tests/"
}
},
"scripts": {
"test" : "./vendor/bin/simple-phpunit"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "5.0.*"
}
}
}
:
"name": "bravik/calendar-bundle",
"description": "Health check bundle",
. . composer
, vendor/bravik/calendar-bundle
"type": "symfony-bundle"
Symfony, . composer
, — Symfony Flex
, — -, ( bundles.php
), "".
— Symfony Flex, , .
"version": "0.1.0",
. composer . .
"autoload": {
"psr-4": {
"bravik\\CalendarBundle\\": "src"
}
},
"autoload-dev": {
"psr-4": {
"bravik\\CalendarBundle\\Tests\\": "tests"
}
},
composer. <VendorName>/<CategoryName>/<BundleName>Bundle
.
composer, bravik\\CalendarBundle
./src
composer.json
. -, , use <BundleNamespace>/<BundleClass>
.
dev
-. .
"require": {
"php": "^7.3"
},
"require-dev": {},
require
require-dev
prod dev . - . composer
. php
.
.
./src
CalendarBundle.php
:
<?php
namespace bravik\CalendarBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class CalendarBundle extends Bundle
{
}
. .
: <BundleName>Bundle.php
, — Bundle
. , Symfony , ( ).
,
.
bravik\CalendarBundle
, composer.json
. .
-
composer
:
composer require bravik/calendar-bundle
, composer
: .
, repositories
composer.json
.
, bundles/CalendarBundle
:
"repositories": [
{
"type" : "path",
"url" : "./bundles/CalendarBundle"
}
],
vendor
, bravik/calendar-bundle
, . vendors
, .
, git- :
"repositories": [
{
"type" : "vcs",
"url" : "git@bitbucket.org:bravik/calendarbundle.git"
}
],
composer
git- vendors/bravik/calendar-bundle
.
composer.
composer require bravik/calendar-bundle
composer.json
, . , config/bundles.php
:
<?php
return [
bravik\CalendarBundle\CalendarBundle::class => ['all' => true],
];
, !
-, ./bundles
.gitignore
, bundles/CalendarBundle
: composer init
. , .
, " " - - , .
, .
- Symfony 2 :
composer.json
MyBundle
. - - IDE GIT-, composer.
- , .
- , .
Example Project 1-bundle-mockup.
, , , DI-.
:
الجزء 1. الحد الأدنى للحزمة
الجزء 2. نأخذ الشفرة والقوالب في الحزمة
الجزء 3. تكامل الحزمة مع المضيف: القوالب ، الأنماط ، JS
الجزء 4. واجهة لتوسيع الحزمة
الجزء 5. المعلمات والتكوين
الجزء 6. الاختبار ، التطبيق الجزئي داخل الحزمة
الجزء 7 دورة الإصدار والتثبيت والتحديث