حزم لارافل والنظام البيئي
تمتلك لارافل نظامًا بيئيًا غنيًا من الحزم التي تمتد وظائفها. من أدوات التصحيح إلى تكاملات الدفع، أنشأ مجتمع لارافل آلاف الحزم لحل المشاكل الشائعة. في هذا الدرس، سنستكشف الحزم الشهيرة ونتعلم كيفية استخدامها وإنشائها.
فهم الحزم
الحزم هي مكونات قابلة لإعادة الاستخدام تضيف وظائف إلى تطبيق لارافل الخاص بك:
- حزم الطرف الأول: حزم رسمية يتم صيانتها بواسطة لارافل (Cashier، Scout، Horizon، إلخ)
- حزم الطرف الثالث: حزم أنشأها المجتمع متاحة عبر Packagist
- مزودي الخدمة: فئات تقوم بتهيئة وظائف الحزمة
- الواجهات: واجهات ثابتة للفئات في حاوية الخدمة
ملاحظة: تحقق دائمًا من توثيق الحزمة ونجوم GitHub وتاريخ آخر تحديث قبل استخدامها في الإنتاج. الحزم الشهيرة والتي يتم صيانتها جيدًا هي خيارات أكثر أمانًا.
تثبيت الحزم
استخدم Composer لتثبيت الحزم:
# تثبيت حزمة
composer require vendor/package-name
# تثبيت إصدار محدد
composer require vendor/package-name:^2.0
# تثبيت للتطوير فقط
composer require --dev vendor/package-name
# تحديث جميع الحزم
composer update
# تحديث حزمة محددة
composer update vendor/package-name
حزم لارافل الشهيرة
1. Laravel Debugbar
يعرض معلومات التصحيح في متصفحك:
# التثبيت
composer require barryvdh/laravel-debugbar --dev
# التكوين (اختياري)
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
# الاستخدام - يتم تمكينه تلقائيًا في البيئة المحلية
# يعرض الاستعلامات والعروض والمسارات واستخدام الذاكرة، إلخ.
2. Laravel Telescope
مساعد تصحيح قوي لتطبيقات لارافل:
# التثبيت
composer require laravel/telescope
# نشر الأصول والترحيلات
php artisan telescope:install
php artisan migrate
# الوصول على /telescope
# يعرض الطلبات والاستثناءات والسجلات والاستعلامات والمهام والبريد، إلخ.
# تقييد الوصول في الإنتاج
// app/Providers/TelescopeServiceProvider.php
protected function gate()
{
Gate::define('viewTelescope', function ($user) {
return in_array($user->email, [
'admin@example.com',
]);
});
}
3. Laravel Horizon
لوحة تحكم جميلة لمراقبة قوائم انتظار Redis:
# التثبيت
composer require laravel/horizon
# نشر الأصول
php artisan horizon:install
# بدء Horizon
php artisan horizon
# الوصول إلى لوحة التحكم على /horizon
# مراقبة قوائم الانتظار والمهام الفاشلة والمقاييس والإنتاجية ووقت التشغيل، إلخ.
4. Laravel Socialite
مصادقة OAuth مع Facebook و Twitter و Google، إلخ:
# التثبيت
composer require laravel/socialite
# التكوين في config/services.php
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'redirect' => 'http://example.com/callback',
],
# الاستخدام
use Laravel\Socialite\Facades\Socialite;
// إعادة التوجيه إلى المزود
return Socialite::driver('github')->redirect();
// معالجة الاستدعاء
$user = Socialite::driver('github')->user();
$user->token;
$user->getId();
$user->getEmail();
$user->getName();
5. Laravel Scout
بحث نص كامل لنماذج Eloquent:
# التثبيت
composer require laravel/scout
# نشر التكوين
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
# تثبيت برنامج تشغيل البحث (Algolia، Meilisearch، إلخ)
composer require algolia/algoliasearch-client-php
# جعل النموذج قابلاً للبحث
use Laravel\Scout\Searchable;
class Post extends Model
{
use Searchable;
public function toSearchableArray()
{
return [
'title' => $this->title,
'content' => $this->content,
];
}
}
# البحث
Post::search('Laravel')->get();
6. حزم Spatie
تنشئ Spatie العديد من حزم لارافل عالية الجودة:
# Laravel Permission (الأدوار والأذونات)
composer require spatie/laravel-permission
# Laravel Media Library (تحميل الملفات)
composer require spatie/laravel-medialibrary
# Laravel Backup (النسخ الاحتياطي لقاعدة البيانات والملفات)
composer require spatie/laravel-backup
# Laravel Activitylog (سجل التدقيق)
composer require spatie/laravel-activitylog
# Laravel Settings (إعدادات التطبيق)
composer require spatie/laravel-settings
7. Laravel Excel
استيراد وتصدير ملفات Excel و CSV:
# التثبيت
composer require maatwebsite/excel
# التصدير
namespace App\Exports;
use App\Models\User;
use Maatwebsite\Excel\Concerns\FromCollection;
class UsersExport implements FromCollection
{
public function collection()
{
return User::all();
}
}
// في المتحكم
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
return Excel::download(new UsersExport, 'users.xlsx');
# الاستيراد
use App\Imports\UsersImport;
Excel::import(new UsersImport, 'users.xlsx');
8. Laravel Cashier
فواتير الاشتراك مع Stripe أو Paddle:
# التثبيت لـ Stripe
composer require laravel/cashier
# تشغيل الترحيلات
php artisan migrate
# إضافة trait Billable إلى نموذج المستخدم
use Laravel\Cashier\Billable;
class User extends Authenticatable
{
use Billable;
}
# إنشاء اشتراك
$user->newSubscription('default', 'price_premium')->create($paymentMethod);
# التحقق من الاشتراك
if ($user->subscribed('default')) {
// المستخدم مشترك
}
نصيحة: قبل تثبيت أي حزمة، تحقق من مستودع GitHub الخاص بها للنجوم والمشكلات والالتزامات الأخيرة. الصيانة النشطة علامة جيدة على حزمة موثوقة.
إنشاء حزمتك الخاصة
قم ببناء حزم قابلة لإعادة الاستخدام لاستخدامك الخاص أو للمجتمع:
الخطوة 1: هيكل الحزمة
vendor/package-name/
├── src/
│ ├── PackageServiceProvider.php
│ ├── Facades/
│ │ └── Package.php
│ └── Package.php
├── config/
│ └── package.php
├── resources/
│ ├── views/
│ └── lang/
├── routes/
│ └── web.php
├── tests/
├── composer.json
└── README.md
الخطوة 2: إنشاء composer.json
{
"name": "yourname/package-name",
"description": "Package description",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Your Name",
"email": "your.email@example.com"
}
],
"require": {
"php": "^8.1",
"illuminate/support": "^10.0"
},
"autoload": {
"psr-4": {
"YourName\\PackageName\\": "src/"
}
},
"extra": {
"laravel": {
"providers": [
"YourName\\PackageName\\PackageServiceProvider"
],
"aliases": {
"Package": "YourName\\PackageName\\Facades\\Package"
}
}
}
}
الخطوة 3: إنشاء مزود الخدمة
<?php
namespace YourName\PackageName;
use Illuminate\Support\ServiceProvider;
class PackageServiceProvider extends ServiceProvider
{
public function register()
{
// دمج التكوين
$this->mergeConfigFrom(
__DIR__.'/../config/package.php', 'package'
);
// تسجيل الربط
$this->app->singleton('package', function ($app) {
return new Package();
});
}
public function boot()
{
// نشر التكوين
$this->publishes([
__DIR__.'/../config/package.php' => config_path('package.php'),
], 'config');
// نشر العروض
$this->publishes([
__DIR__.'/../resources/views' => resource_path('views/vendor/package'),
], 'views');
// تحميل العروض
$this->loadViewsFrom(__DIR__.'/../resources/views', 'package');
// تحميل المسارات
$this->loadRoutesFrom(__DIR__.'/../routes/web.php');
// تحميل الترحيلات
$this->loadMigrationsFrom(__DIR__.'/../database/migrations');
// تحميل الترجمات
$this->loadTranslationsFrom(__DIR__.'/../resources/lang', 'package');
}
}
الخطوة 4: إنشاء Facade (اختياري)
<?php
namespace YourName\PackageName\Facades;
use Illuminate\Support\Facades\Facade;
class Package extends Facade
{
protected static function getFacadeAccessor()
{
return 'package';
}
}
الخطوة 5: اختبار حزمتك محليًا
// في composer.json لتطبيق لارافل الخاص بك
{
"repositories": [
{
"type": "path",
"url": "../path/to/package"
}
],
"require": {
"yourname/package-name": "*"
}
}
# تثبيت الحزمة
composer update yourname/package-name
تمرين 1: تثبيت وتكوين الحزم الشهيرة
قم بإعداد الحزم الأساسية في مشروع لارافل:
- قم بتثبيت Laravel Debugbar للتطوير
- قم بتثبيت Laravel Telescope وتكوين المصادقة
- قم بتثبيت Spatie Laravel Permission وإنشاء الأدوار/الأذونات
- قم بتثبيت Laravel Excel وإنشاء تصدير بسيط
- اختبر كل حزمة لضمان التثبيت الصحيح
تمرين 2: المصادقة الاجتماعية
قم بتنفيذ تسجيل الدخول OAuth باستخدام Laravel Socialite:
- قم بتثبيت Laravel Socialite
- سجل التطبيقات مع GitHub و Google
- قم بتكوين الخدمات في config/services.php
- أنشئ المسارات والمتحكمات لتدفق OAuth
- تعامل مع إنشاء/تسجيل دخول المستخدم بعد استدعاء OAuth
- اختبر تسجيل الدخول مع كلا المزودين
تمرين 3: إنشاء حزمة بسيطة
قم ببناء حزمة لارافل الخاصة بك:
- أنشئ هيكل حزمة مع composer.json
- أنشئ مزود خدمة يسجل دالة مساعدة
- أضف ملف تكوين يمكن نشره
- أنشئ مكون Blade يمكن استخدامه في العروض
- اختبر الحزمة محليًا في تطبيق لارافل
- اكتب التوثيق في README.md
موارد اكتشاف الحزم
- Packagist:
packagist.org - مستودع حزم Composer الرسمي
- Laravel News:
laravel-news.com - أحدث الحزم والدروس
- Packalyst:
packalyst.com - دليل حزم لارافل
- Laravel.io:
laravel.io - منتدى المجتمع والموارد
- Awesome Laravel: قائمة GitHub من موارد لارافل المنسقة
أفضل الممارسات
- قيّم قبل التثبيت: تحقق من النجوم والمشكلات وحالة الصيانة
- اقرأ التوثيق: اقرأ دائمًا توثيق الحزمة قبل الاستخدام
- حدّث بانتظام: قم بتحديث الحزم بانتظام للأمان والميزات
- الإصدار الدلالي: حدد قيود الإصدار في composer.json
- التطوير مقابل الإنتاج: استخدم علامة --dev للحزم المخصصة للتطوير فقط
- اختبر بعد التحديثات: قم بتشغيل الاختبارات بعد تحديث الحزم
- قلل التبعيات: لا تثبت الحزم للوظائف البسيطة التي يمكنك كتابتها بنفسك
- الأمان: تحقق بانتظام من الاستشارات الأمنية للحزم المثبتة
الخلاصة
في هذا الدرس، تعلمت:
- كيفية تثبيت وإدارة الحزم باستخدام Composer
- حزم لارافل الشهيرة وحالات استخدامها
- Laravel Debugbar و Telescope للتصحيح
- Laravel Horizon لمراقبة قوائم الانتظار
- Laravel Socialite لمصادقة OAuth
- Laravel Scout للبحث في النص الكامل
- حزم Spatie للوظائف الشائعة
- كيفية إنشاء حزم لارافل الخاصة بك
- أفضل الممارسات لإدارة الحزم
النظام البيئي لـ لارافل هو أحد أعظم نقاط قوتها. تعلم الاستفادة من الحزم الموجودة يوفر الوقت ويضمن أنك تستخدم حلولًا مجربة. عندما تحتاج إلى وظائف مخصصة، يتيح لك إنشاء حزمتك الخاصة إمكانية إعادة الاستخدام عبر المشاريع.