إنشاء وتشغيل مشروع PHPixie على نظام macOS باستخدام ServBay
PHPixie هو إطار عمل PHP خفيف وعالي الأداء، صمم خصيصًا لتسريع عملية تطوير تطبيقات الويب. يعتمد نموذج التصميم HMVC (تحكم-عرض-نموذج هرمي)، ويوفر بنية شفرة منسقة وقدرة معالجة فعالة. يُعرف PHPixie بكونه بسيطًا ومرنًا وسريعًا، مما يجعله مفضلًا لدى العديد من المطورين.
أهم ميزات ومزايا PHPixie
- خفيف الحجم: نواة PHPixie مصممة بأقل المكونات الضرورية لبناء التطبيقات مع زمن تشغيل وإقلاع سريع.
- أداء عالي: بني الإطار لزيادة الكفاءة، ويمكنه التعامل مع الطلبات المتزامنة بكفاءة، ليلائم المشاريع التي تتطلب أداء عاليًا.
- سهل التعلم: API واضح ووثائق شاملة تتيح للمطورين إتقان استخدامه بسرعة نسبيًا.
- مرونة: يتمتع الإطار ببنية قابلة للتكيّف تسمح بدمج المكتبات والمكونات الخارجية حسب متطلبات المشروع.
- دعم مجتمعي نشط: مجتمع نشط من المطورين يدعم وفرة من الإضافات والموارد الخارجية.
يساعد PHPixie المطورين على بناء تطبيقات ويب عالية الأداء والجودة بفعالية، سواء للمشاريع الصغيرة أو للتطبيقات المؤسساتية الكبيرة.
إنشاء وتشغيل مشروع PHPixie باستخدام ServBay
سيرشدك هذا الدليل إلى كيفية استخدام بيئة تطوير ServBay المحلية لإنشاء وتشغيل مشروع PHPixie. سنستخدم بيئة PHP المدمجة وComposer لإدارة الاعتمادات، ووظيفة "المواقع" في ServBay لتكوين خادم الويب، مع خطوات مبسطة للوصول المحلي والدمج مع قواعد البيانات وتقنيات التخزين المؤقت.
المتطلبات الأساسية
- يجب تثبيت وتشغيل ServBay على نظام macOS مسبقًا؛ حيث يحتوي على PHP وComposer وأنواع متعددة من قواعد البيانات (MySQL، PostgreSQL، MongoDB، Redis، إلخ) بالإضافة إلى خادم Caddy للويب.
- إلمام أساسي باستخدام سطر الأوامر.
إنشاء مشروع PHPixie
المسار المقترح لوضع المواقع
تنصح ServBay بوضع مشاريع المواقع المحلية ضمن الدليل /Applications/ServBay/www
لتسهيل الإدارة وضبط الصلاحيات الخاصة بـ ServBay.
- تأكد من تثبيت Composer: يأتي ServBay مثبتًا مع Composer ولا حاجة لتثبيته يدويًا. يمكنك التحقق عبر سطر الأوامر:
composer --version
. - إنشاء مجلد المشروع: أنشئ مجلدًا جديدًا داخل جذر المواقع الخاص بـ ServBay لحفظ مشروع PHPixie ثم انتقل إليه:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - إنشاء مشروع PHPixie باستخدام Composer: نفذ أمر Composer داخل مجلد المشروع لإنشاء قالب PHPixie:bashسيقوم Composer بتنزيل PHPixie وجميع الاعتمادات المطلوبة إلى الدليل الحالي.
composer create-project phpixie/project .
1
إعداد خادم الويب
استخدم ميزة المواقع في ServBay لتكوين خادم Caddy، بما يوجه ويشغّل مشروع PHPixie بالشكل الصحيح.
افتح واجهة تطبيق ServBay.
انتقل إلى قائمة المواقع (Websites).
اضغط لإضافة موقع جديد.
أدخل معلومات الموقع:
- الاسم: مثال
My First PHPixie Dev Site
(اسم تعريفي داخل ServBay) - اسم النطاق: مثال
servbay-phpixie-test.local
(النطاق المحلي للوصول عبر المتصفح) - نوع الموقع: اختر
PHP
. - إصدار PHP: اختر الإصدار الذي ترغب به، مثل
8.3
. - جذر الموقع (Document Root): وجّهه إلى مجلد
web
الخاص بمشروعك:/Applications/ServBay/www/servbay-phpixie-app/web
لماذا الدليل
/web
؟ملف الدخول في مشروع PHPixie هو
web/index.php
. ولأسباب أمنية واتباع أفضل الممارسات، يجب أن يكون جذر الخادم موجهًا مباشرة إلى مجلدweb
حتى يتم حجب الملفات الحساسة (مثل ملفات الإعدادات أو مجلد vendor) من الوصول المباشر عن طريق الويب.- الاسم: مثال
احفظ الإعدادات. سيقوم ServBay تلقائيًا بإعداد Caddy وتحديث ملف hosts المحلي لديك (إذا لزم الأمر)، بحيث يشير
servbay-phpixie-test.local
إلى خادم ServBay المحلي.
لمزيد من التفاصيل حول الإعدادات، راجع إضافة أول موقع إلكتروني.
إضافة كود تجريبي
للتحقق من تشغيل المشروع بشكل صحيح واستعراض تكامل قواعد البيانات والتخزين المؤقت، أضف الكود التجريبي التالي للمشروع.
إنشاء متحكم تجريبي: أضف الملف التالي في
src/App/HTTP/Controller/Home.php
. أنشئ المجلدات أو الملف يدويًا إذا لم تكن موجودة.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // استدعاء كلاس Query class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // الإجراء الافتراضي للصفحة الرئيسية public function action_index(Request $request) { // عرض قالب assets/templates/app/home.php return $this->template->render('app:home'); } // إجراء Memcached تجريبي public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached from ServBay!', 60); // تخزين البيانات لمدة 60 ثانية $value = $cache->get('key'); // جلب البيانات return $this->response()->string($value); // إرجاع الاستجابة كنص } // إجراء Redis تجريبي public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis from ServBay!'); // تخزين البيانات $value = $redis->get('key'); // جلب البيانات return $this->response()->string($value); // إرجاع الاستجابة كنص } // إجراء إضافة مستخدم باستخدام MySQL/PostgreSQL public function action_add_user(Request $request) { // استخدام مكون قاعدة البيانات للحصول على منشئ الاستعلامات $query = $this->components->database()->query(); // إضافة مستخدم جديد إلى جدول users $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // بريد إلكتروني فريد ])->execute(); // تنفيذ الإدراج return $this->response()->string('User added successfully.'); // رسالة نجاح } // إجراء عرض قائمة المستخدمين باستخدام MySQL/PostgreSQL public function action_list_users(Request $request) { // استخدام مكون قاعدة البيانات للحصول على منشئ الاستعلامات $query = $this->components->database()->query(); // جلب كافة المستخدمين من جدول users $users = $query->select('*')->from('users')->execute()->fetchAll(); // تنفيذ الاستعلام وجلب النتائج return $this->response()->json($users); // إرجاع القائمة بصيغة JSON } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67إنشاء قالب تجريبي: أضف الشيفرة التالية إلى
assets/templates/app/home.php
. أنشئ المجلدات أو الملف إن لم تكن موجودة.php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome to PHPixie on ServBay</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>Welcome to PHPixie on ServBay</h1> <p>This page is being generated dynamically by your PHPixie application running on ServBay.</p> <h2>روابط الميزات التجريبية:</h2> <ul> <li><a href="/home/memcached">اختبر Memcached</a></li> <li><a href="/home/redis">اختبر Redis</a></li> <li><a href="/home/add_user">أضف مستخدمًا إلى قاعدة البيانات</a></li> <li><a href="/home/list_users">عرض المستخدمين في قاعدة البيانات</a></li> </ul> <p>يرجى التأكد من قيامك بخطوات إعداد قاعدة البيانات والتخزين المؤقت ذات الصلة.</p> </body> </html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
الوصول إلى الموقع الأساسي
بعد إعداد الموقع في ServBay وإضافة الشيفرة التجريبية، يمكنك الوصول إلى النطاق الخاص بك عبر المتصفح:
- افتح المتصفح وزر
https://servbay-phpixie-test.local
. - يجب أن تظهر لك صفحة بعنوان "Welcome to PHPixie on ServBay" مع روابط للميزات التجريبية.
إذا لم تتمكن من الوصول إلى الموقع، تحقق مما يلي:
- تأكد من تشغيل ServBay.
- تحقق من صحة إعدادات الموقع في ServBay، خاصة اسم النطاق ونوع الموقع وجذر الموقع.
- تأكد من أن ملف hosts المحلي لديك يحل النطاق
servbay-phpixie-test.local
(في الغالب يتحكم ServBay بذلك تلقائيًا). - تحقق من تفعيل إصدار PHP في ServBay.
أمثلة دمج قاعدة البيانات والتخزين المؤقت
يدعم PHPixie أصلًا قواعد بيانات وتقنيات تخزين مؤقت متعددة. ServBay يوفر MySQL وPostgreSQL وRedis وMemcached مسبقًا، لتتمكن من دمجها بسهولة في مشروعك.
ملاحظة مهمة: قبل استخدام قاعدة البيانات، تأكد من تشغيل الخدمة المرتبطة (MySQL أو PostgreSQL) وإنشاء قاعدة بيانات للمشروع، مثل servbay_phpixie_app
. يمكنك إنشاء القاعدة عبر أدوات الإدارة مثل Sequel Ace أو Postico أو TablePlus أو عبر سطر الأوامر. المستخدم الافتراضي غالبًا root
، وكلمة المرور password
(تأكد من قيم إعدادات ServBay لديك).
إعداد الاتصال بقاعدة البيانات
بحسب نوع قاعدة البيانات المختارة (MySQL أو PostgreSQL)، حرر الملف assets/config/database.php
في جذر المشروع، وعادة يكون العنوان 127.0.0.1
.
مثال إعداد MySQL (assets/config/database.php
):
<?php
return [
'default' => [
'driver' => 'pdo',
// ضبط سلسلة الاتصال حسب نوع قاعدة بياناتك وإعدادات ServBay
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // المستخدم الافتراضي في ServBay
'password' => 'password', // كلمة المرور الافتراضية (عدلها حسب إعدادك)
'options' => []
]
];
2
3
4
5
6
7
8
9
10
11
12
مثال إعداد PostgreSQL (assets/config/database.php
):
<?php
return [
'default' => [
'driver' => 'pdo',
// ضبط سلسلة الاتصال حسب نوع قاعدة بياناتك وإعدادات ServBay
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // المستخدم الافتراضي في ServBay
'password' => 'password', // كلمة المرور الافتراضية (عدلها حسب إعدادك)
'options' => []
]
];
2
3
4
5
6
7
8
9
10
11
12
إنشاء جداول قاعدة البيانات (باستخدام الهجرات)
يوفر PHPixie أداة سطر أوامر لإدارة "الهجرات" — أي ضبط هيكلة قاعدة البيانات بشكل تراكمي ومدعوم بالإصدار.
- افتح سطر الأوامر: انتقل إلى جذر مشروع PHPixie:bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - إنشاء ملف هجرة: نفّذ أمر PHPixie لإنشاء هجرة جديدة لإنشاء جدول users:bashسيتم إنشاء ملف جديد في
php pixie generate:migration create_users_table
1assets/migrations
باسم يحوي الطابع الزمني. - تحرير ملف الهجرة: افتح ملف الهجرة الجديد (مثال:
YYYY_MM_DD_HHMMSS_create_users_table.php
) وعرّف فيه طريقةup()
وdown()
لبنية جدول users:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // إنشاء جدول users بواسطة منشئ المخطط $this->schema->create('users', function(Table $table) { $table->increments('id'); // مفتاح أساسي تلقائي $table->string('name'); // عمود الاسم $table->string('email')->unique(); // عمود البريد الإلكتروني - فريد $table->timestamps(); // أعمدة created_at و updated_at }); } public function down() { // حذف جدول users عند التراجع عن الهجرة $this->schema->drop('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - تنفيذ الهجرة: من جذر المشروع، نفّذ الأمر التالي لإنشاء جدول users:bashعند نجاح العملية، ستلاحظ ظهور تأكيد في سطر الأوامر. ويمكنك التأكد من وجود جدول users باستخدام أداة إدارة قواعد البيانات لديك.
php pixie migrate
1
العمل مع قواعد البيانات العلائقية (MySQL/PostgreSQL)
في المتحكم التجريبي الذي أنشأناه (src/App/HTTP/Controller/Home.php
) توجد طريقتان هما action_add_user
و action_list_users
لاستعراض التفاعل مع MySQL أو PostgreSQL.
- إضافة مستخدم: زيارة
https://servbay-phpixie-test.local/home/add_user
ستضيف مستخدمًا جديدًا إلى جدول users. - عرض المستخدمين: زيارة
https://servbay-phpixie-test.local/home/list_users
تعرض جميع المستخدمين في جدول users بصيغة JSON.
إعداد واستخدام قواعد البيانات NoSQL (Memcached/Redis)
يأتي ServBay مثبتًا مع برامج Memcached وRedis وإضافاتهما لـ PHP. فقط أجرِ الضبط اللازم داخل مشروع PHPixie.
إعداد Memcached (assets/config/cache.php
):
حرر أو أنشئ ملف assets/config/cache.php
وأضف الإعدادات التالية:
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // العنوان الافتراضي لـ Memcached في ServBay
'port' => 11211, // المنفذ الافتراضي لـ Memcached في ServBay
'weight' => 100,
],
],
],
];
2
3
4
5
6
7
8
9
10
11
12
13
14
إعداد Redis (assets/config/redis.php
):
حرر أو أنشئ ملف assets/config/redis.php
وأضف الإعدادات التالية:
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // عنوان Redis الافتراضي في ServBay
'port' => 6379, // المنفذ الافتراضي لـ Redis في ServBay
'timeout' => 0,
'database' => 0, // رقم قاعدة بيانات Redis
],
];
2
3
4
5
6
7
8
9
10
استخدام Memcached/Redis:
كما في الكود التجريبي المضاف في المتحكم (src/App/HTTP/Controller/Home.php
)، طريقتا action_memcached
وaction_redis
توضح كيفية استخدام مكون التخزين المؤقت (Memcached أو Redis حسب الإعداد).
- اختبار Memcached: زيارة
https://servbay-phpixie-test.local/home/memcached
تكتب زوج مفتاح/قيمة في Memcached ثم تسترجعه وتعرضه. - اختبار Redis: زيارة
https://servbay-phpixie-test.local/home/redis
تكتب زوج مفتاح/قيمة في Redis ثم تسترجعه وتعرضه.
تأكد من تفعيل خدمات Memcached وRedis من إعدادات ServBay.
ملخص
باتباع الخطوات السابقة، أصبح بإمكانك إنشاء وتكوين وتشغيل مشروع PHPixie محليًا على macOS باستعمال ServBay، مع معرفة كيفية استخدام Composer لإنشاء المشروع، والاستفادة من ميزة "المواقع" لتهيئة خادم الويب، وضبط تكامل قاعدة البيانات والتخزين المؤقت، ثم التحقق عمليًا من عمل هذه الميزات.
بيئة ServBay المتكاملة تجعل إعداد بيئة تطوير PHP أمرًا بالغ السهولة، بحيث يمكنك التركيز أكثر على تطوير الشيفرات. نتمنى أن يساعدك هذا الدليل على البدء بسرعة في بناء مشروعك القادم باستخدام PHPixie!