إنشاء وتشغيل مشروع CakePHP
ما هو CakePHP؟
CakePHP هو إطار عمل ويب مفتوح المصدر لـ PHP، مصمم لمساعدة المطورين في بناء تطبيقات ويب بسرعة. يعتمد على هيكلية MVC (النموذج-العرض-المتحكم) ويوفر مجموعة قوية من الأدوات التي تبسط المهام الشائعة أثناء التطوير مثل التفاعل مع قاعدة البيانات ومعالجة النماذج والمصادقة وإدارة الجلسات، وغيرها.
الميزات والفوائد الرئيسية لـ CakePHP
- التطوير السريع: يوفر أدوات توليد كود غنية تساعد المطورين على توليد بنية الكود الشائعة بسرعة.
- ORM مرنة وقوية: تعمل طبقة ORM (خرائط الكائنات العلائقية) المدمجة على تبسيط عمليات قاعدة البيانات.
- الأمان: تأتي مجهزة بالعديد من ميزات الأمان مثل التحقق من المدخلات وحماية CSRF ومنع هجمات SQL Injection.
- الدعم المجتمعي: يحتوي على مجتمع نشط ونظام بيئة غني بالمكونات الإضافية.
- وثائق جيدة: يوفر وثائق ودروس تعليمية وافرة تساعد المطورين على البدء بسرعة.
يناسب CakePHP مجموعة واسعة من المشاريع، من التطبيقات الصغيرة إلى الأنظمة الشركات الكبيرة، ويساعد المطورين في بناء تطبيقات ويب عالية الجودة بسرعة.
إنشاء وتشغيل مشروع CakePHP باستخدام ServBay
في هذه المقالة، سنستخدم بيئة PHP التي توفرها ServBay لإنشاء وتشغيل مشروع CakePHP. سنستخدم ميزة "المضيف" الخاصة بـ ServBay لإعداد خادم ويب وتكوين المشروع للوصول.
ملاحظة: إذا كنت مستخدم NGINX أو Apache سابق
يستخدم ServBay Caddy كخادم ويب افتراضيًا. هناك بعض النقاط الأساسية التي يجب ملاحظتها عند الانتقال من NGINX و Apache إلى ServBay:
تكوين Caddy
يأتي ServBay مع Caddy مدمج، والتكوين الافتراضي قد تم تحسينه وضبطه. يمكن للمطورين إدارة الموقع من خلال ميزة "المضيف" الخاصة بـ ServBay دون الحاجة لتعديل ملفات تكوين Caddy يدويًا.
قواعد إعادة الكتابة و .htaccess
في NGINX و Apache، عادة ما يحتاج المطورون إلى كتابة قواعد إعادة الكتابة وملفات .htaccess بأنفسهم لمعالجة إعادة كتابة URL وتكوينات أخرى. ومع ذلك، يأتي ServBay مع تكوينات Caddy مُعدة مسبقًا، وبالتالي لا يحتاج المطورون إلى كتابة هذه القواعد بأنفسهم إلا في حال وجود حاجة خاصة.
اعرف المزيد
لمزيد من المعلومات ذات الصلة، يُرجى الرجوع إلى إعادة الكتابة وhtaccess وكيفية نقل موقع Apache إلى ServBay وكيفية نقل موقع NGINX إلى ServBay.
إنشاء مشروع CakePHP
TIP
يقترح 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
تكوين خادم الويب
استخدم ميزة "المضيف" الخاصة بـ ServBay للوصول إلى مشروع CakePHP عبر خادم الويب. في إعدادات "المضيف" الخاصة بـ ServBay، أضف مضيفًا جديدًا:
- الاسم:
My First CakePHP Dev Site
- اسم النطاق:
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
في ServBay، امتداد Memcached مُثبَّت مسبقًا ولا يحتاج لتثبيت إضافي.
تكوين Memcached
في ملف
config/app_local.php
، قم بتكوين معلومات اتصال Memcached: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
في ServBay، امتداد Redis مُثبَّت مسبقًا ولا يحتاج لتثبيت إضافي.
تكوين Redis
في ملف
config/app_local.php
، قم بتكوين معلومات اتصال Redis: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
أمثلة على قواعد بيانات SQL
إنشاء بنية قاعدة البيانات وملف الهجرة
إنشاء ملف الهجرة
استخدم أداة Bake الخاصة بـ CakePHP لإنشاء ملف الهجرة:
bashbin/cake bake migration CreateUsers name:string email:string:unique
1تشغيل الهجرة
استخدم أمر CakePHP لتشغيل الهجرة وإنشاء جداول قاعدة البيانات:
bashbin/cake migrations migrate
1
مثال MySQL
تكوين MySQL
في ملف
config/app_local.php
، قم بتكوين معلومات اتصال MySQL: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
في ملف
config/app_local.php
، قم بتكوين معلومات اتصال PostgreSQL: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 لإدارة والوصول إلى مشاريعك.