إنشاء وتشغيل مشروع CakePHP
ما هو CakePHP؟
CakePHP هو إطار عمل ويب مفتوح المصدر لـ PHP مصمم لمساعدة المطورين في بناء تطبيقات الويب بسرعة. يعتمد على بنية MVC (النموذج-العرض-المتحكم) ويوفر مجموعة أدوات قوية تُبسط المهام التطويرية الشائعة مثل التفاعل مع قاعدة البيانات ومعالجة النماذج والمصادقة وإدارة الجلسات.
الميزات الرئيسية والفوائد لـ CakePHP
- التطوير السريع: يقدم أدوات توليد الأكواد الغنية التي تساعد المطورين على توليد هياكل الأكواد الشائعة بسرعة.
- ORM مرن وقوي: ط-layer تبسيط عمليات قاعدة البيانات المدمج في ORM (رسم الكائن-العلاقة).
- الأمان: ميزات أمان مدمجة مثل التحقق من المدخلات وحماية CSRF ومنع حقن SQL.
- دعم المجتمع: مجتمع نشط ونظام ملحقات غني.
- توثيق جيد: يوفر وثائق شاملة ودروس تعليمية لمساعدة المطورين على البدء بسرعة.
CakePHP مناسب للمشاريع من التطبيقات الصغيرة إلى أنظمة الشركات الكبرى، مما يساعد المطورين على بناء تطبيقات ويب عالية الجودة بسرعة.
إنشاء وتشغيل مشروع CakePHP باستخدام ServBay
في هذا المقال، سنستخدم بيئة PHP المقدمة من ServBay لإنشاء وتشغيل مشروع CakePHP. سنستخدم ميزة "Host" في ServBay لإنشاء خادم ويب وتكوين المشروع للوصول إليه بإعدادات بسيطة.
::: تحذير: ملاحظة إذا كنت قد استخدمت NGINX أو Apache من قبل
يستخدم ServBay Caddy كخادم الويب افتراضيًا. هناك بعض التغييرات الأساسية التي يجب ملاحظتها للمستخدمين الذين يقومون بالانتقال من NGINX وApache إلى ServBay:
تكوين Caddy
ياتي ServBay مع Caddy مثبت ومكون مسبقًا. يحتاج المطورون فقط إلى إدارة المواقع من خلال ميزة "Host" في ServBay دون تعديل ملف تكوين Caddy يدويًا.
قواعد إعادة الكتابة و .htaccess
في NGINX وApache، عادةً ما يكتب المطورون قواعد إعادة الكتابة وملفات .htaccess الخاصة بهم للتعامل مع إعادة كتابة الروابط والتكوينات الأخرى. ومع ذلك، يوفر ServBay بالفعل قواعد Caddy المحسنة من الصندوق، لذلك لا يحتاج المطورون إلى كتابة هذه القواعد إلا في حالة وجود متطلبات خاصة.
المزيد من المعلومات
لمزيد من المعلومات، راجع إعادة الكتابة و htaccess، كيفية ترحيل موقع Apache إلى ServBay، وكيفية ترحيل موقع NGINX إلى ServBay.
:::
إنشاء مشروع CakePHP
::: تلميح يوصي ServBay بأن يضع المطورون مواقعهم في دليل /Applications/ServBay/www
لإدارة أسهل. :::
تثبيت Composer
يأتي ServBay مع Composer مثبت مسبقًا، لذلك لا يلزم التثبيت المنفصل.
إنشاء مشروع CakePHP
استخدم Composer لإنشاء مشروع CakePHP جديد:
bashcd /Applications/ServBay/www mkdir servbay-cakephp-app cd servbay-cakephp-app composer create-project --prefer-dist cakephp/app .
1
2
3
4الدخول إلى دليل المشروع
انتقل إلى دليل مشروع CakePHP الذي تم إنشاؤه حديثًا:
bashcd /Applications/ServBay/www/servbay-cakephp-app
1
التكوينات الأولية
تكوين متغيرات البيئة
قم بتكوين معلومات الاتصال بقاعدة البيانات والمتغيرات البيئية الأخرى في ملف
config/app_local.php
. تأكد من تعيين الإعدادات التالية بشكل صحيح:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
تكوين خادم الويب
استخدم ميزة "Host" في ServBay للوصول إلى مشروع CakePHP عبر خادم الويب. في إعدادات المضيف في ServBay، أضف مضيفًا جديدًا:
- الاسم:
موقعي الأول لتطوير CakePHP
- النطاق:
servbay-cakephp-test.local
- نوع الموقع:
PHP
- إصدار PHP: اختر
8.3
- دليل جذر الموقع:
/Applications/ServBay/www/servbay-cakephp-app/webroot
للحصول على خطوات الإعداد التفصيلية، راجع إضافة موقعك الأول.
إضافة كود عينة
أضف الكود التالي إلى ملف config/routes.php
لإخراج "Hello ServBay!":
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
أضف الكود التالي إلى ملف src/Controller/PagesController.php
:
namespace App\Controller;
use Cake\Http\Response;
class PagesController extends AppController
{
public function display()
{
return new Response(['body' => 'Hello ServBay!']);
}
}
2
3
4
5
6
7
8
9
10
11
الوصول إلى الموقع
افتح المتصفح وزر https://servbay-cakephp-test.local
لتشاهد إخراج الصفحة "Hello ServBay!".
مثال باستخدام قواعد بيانات NoSQL
مثال Memcached
تثبيت امتداد Memcached
تم تثبيت امتداد Memcached مسبقًا في ServBay، لذا لا يلزم التثبيت الإضافي.
تكوين Memcached
قم بتكوين معلومات الاتصال بMemcached في ملف
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\MemcachedEngine', 'servers' => ['127.0.0.1'], ], ],
1
2
3
4
5
6تكوين الروابط
أضف الكود التالي إلى ملف
config/routes.php
:php$routes->connect('/memcached', ['controller' => 'Pages', 'action' => 'memcached']);
1استخدام Memcached
استخدم الذاكرة المؤقتة في المتحكم:
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function memcached() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Memcached!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17افتح المتصفح وزر
https://servbay-cakephp-test.local/memcached
مثال Redis
تثبيت امتداد Redis
تم تثبيت امتداد Redis مسبقًا في ServBay، لذا لا يلزم التثبيت الإضافي.
تكوين Redis
قم بتكوين معلومات الاتصال بRedis في ملف
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\RedisEngine', 'server' => '127.0.0.1', 'port' => 6379, ], ],
1
2
3
4
5
6
7تكوين الروابط
أضف الكود التالي إلى ملف
config/routes.php
:php$routes->connect('/redis', ['controller' => 'Pages', 'action' => 'redis']);
1استخدام Redis
استخدم الذاكرة المؤقتة في المتحكم:
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function redis() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Redis!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17افتح المتصفح وزر
https://servbay-cakephp-test.local/redis
مثال على قاعدة البيانات العلائقية
إنشاء مخطط قاعدة البيانات وملفات الهجرة
إنشاء ملفات الهجرة
استخدم أداة Bake في CakePHP لإنشاء ملفات الهجرة:
bashbin/cake bake migration CreateUsers name:string email:string:unique
1تشغيل الهجرة
استخدم أوامر CakePHP لتشغيل الهجرات وإنشاء جداول قاعدة البيانات:
bashbin/cake migrations migrate
1
مثال MySQL
تكوين MySQL
قم بتكوين معلومات الاتصال بMySQL في ملف
config/app_local.php
:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9تكوين الروابط
أضف الكود التالي إلى ملف
config/routes.php
:php$routes->connect('/mysql-add', ['controller' => 'Pages', 'action' => 'mysqlAdd']); $routes->connect('/mysql', ['controller' => 'Pages', 'action' => 'mysql']);
1
2إضافة جدول المستخدم
أضف الكود التالي إلى ملف
src/Model/Table/UsersTable.php
:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8إضافة بيانات المستخدم
أضف بيانات المستخدم في المتحكم:
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function mysqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function mysql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => json_encode($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
25افتح المتصفح وزر
https://servbay-cakephp-test.local/mysql-add
وhttps://servbay-cakephp-test.local/mysql
مثال PostgreSQL
تكوين PostgreSQL
قم بتكوين معلومات الاتصال بPostgreSQL في ملف
config/app_local.php
:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'driver' => Postgres::Class, 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
10تكوين الروابط
أضف الكود التالي إلى ملف
config/routes.php
:php$routes->connect('/pgsql-add', ['controller' => 'Pages', 'action' => 'pgsqlAdd']); $routes->connect('/pgsql', ['controller' => 'Pages', 'action' => 'pgsql']);
1
2إضافة جدول المستخدم
أضف الكود التالي إلى ملف
src/Model/Table/UsersTable.php
:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8إضافة بيانات المستخدم
أضف بيانات المستخدم في المتحكم:
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function pgsqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function pgsql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => json_encode($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
25افتح المتصفح وزر
https://servbay-cakephp-test.local/pgsql-add
وhttps://servbay-cakephp-test.local/pgsql
من خلال هذه الخطوات، تكون قد أنشأت وأدرت مشروعًا لـ CakePHP بنجاح، واستخدمت ميزات ServBay لإدارة والوصول إلى مشروعك، واتصلت واستفدت من استعلامات قواعد البيانات المختلفة.