إنشاء وتشغيل مشروع CodeIgniter
ما هو CodeIgniter؟
CodeIgniter هو إطار عمل خفيف الوزن للـ PHP مناسب لتطوير تطبيقات الويب بسرعة وكفاءة. يتبع نمط تصميم MVC (النموذج-العرض-المتحكم)، ويقدم مجموعة غنية من الميزات والأدوات التي تمكّن المطورين من بناء تطبيقات ويب عالية الجودة بسرعة. يُعرف ببساطته وأدائه العالي وسهولة تعلمه، ويعد CodeIgniter خياراً شائعاً بين المطورين.
المميزات الرئيسية وفوائد CodeIgniter
- خفيف الوزن: نظام CodeIgniter الأساسي صغير جداً، ويحتوي فقط على المكونات الضرورية، مما يجعله يتم تحميله بسرعة كبيرة.
- أداء عالي: يُعرف CodeIgniter بأدائه الفعال وسرعته، وقادر على التعامل مع التوازي العالي.
- سهل التعلم: يوفر واجهة برمجة تطبيقات بسيطة وسهلة الاستخدام مع وثائق شاملة، مما يتيح للمطورين البدء بسرعة.
- مرونة: يسمح للمطورين باختيار واستخدام مكتبات وإضافات خارجية بحرية، مما يجعل التمديدات والتخصيصات مريحة.
- دعم مجتمعي قوي: هناك مجتمع مطورين نشط وثروة من الامتدادات الخارجية.
يمكن أن يساعدك CodeIgniter المطورين في بناء تطبيقات ويب عالية الأداء والجودة بسرعة، وهو مناسب للمشاريع من كل الأحجام.
إنشاء وتشغيل مشروع CodeIgniter باستخدام ServBay
في هذا المقال، سنستخدم بيئة PHP مع ServBay لإنشاء وتشغيل مشروع CodeIgniter. سنستخدم وظيفة "Host" الخاصة بـ ServBay لإعداد خادم الويب وتحقيق الوصول إلى المشروع من خلال تكوين بسيط.
ملاحظة: إذا كنت مستخدماً لـ NGINX أو Apache
يستخدم ServBay Caddy كخادم ويب افتراضي. بالنسبة للمستخدمين الذين ينتقلون من NGINX و Apache إلى ServBay، هناك بعض التغييرات الرئيسية التي يجب الانتباه إليها:
تكوين Caddy
Caddy مضمن بالفعل في ServBay، وقد تم تحسين التكوين الافتراضي وتصحيحه. يحتاج المطورون فقط إلى إدارة الموقع من خلال وظيفة "Host" في ServBay دون تعديل ملفات تكوين Caddy يدوياً.
قواعد إعادة الكتابة و .htaccess
في NGINX و Apache، عادة ما يحتاج المطورون إلى كتابة قواعد إعادة الكتابة الخاصة بهم وملفات .htaccess لعمليات إعادة كتابة عناوين URL وغيرها من التكوينات. ولكن مع ServBay، القواعد الخاصة بـ Caddy تكون مكونة مسبقاً، مما يعني أنه ما لم يكن هناك متطلبات خاصة، لا يحتاج المطورون إلى كتابة هذه القواعد بأنفسهم.
تعلم المزيد
لمزيد من المعلومات، يرجى الرجوع إلى إعادة الكتابة و htaccess، كيفية نقل موقع Apache إلى ServBay، كيفية نقل موقع NGINX إلى ServBay.
إنشاء مشروع CodeIgniter
TIP
تنصح ServBay المطورين بوضع مواقعهم في دليل /Applications/ServBay/www
لسهولة الإدارة.
تثبيت Composer
يأتي Composer مثبتاً مسبقاً مع ServBay، لذا لا حاجة لتثبيته بشكل منفصل.
إنشاء مشروع CodeIgniter
استخدم Composer لإنشاء مشروع CodeIgniter جديد:
bashcd /Applications/ServBay/www mkdir servbay-codeigniter-app cd servbay-codeigniter-app composer create-project codeigniter4/appstarter .
1
2
3
4الدخول إلى دليل المشروع
ادخل إلى دليل مشروع CodeIgniter المنشأ حديثاً:
bashcd /Applications/ServBay/www/servbay-codeigniter-app
1
التكوين الأولي
تكوين اتصال قاعدة البيانات
قم بتكوين إعدادات اتصال قاعدة البيانات في ملف
app/Config/Database.php
:phppublic $default = [ 'DSN' => '', 'hostname' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_codeigniter_app', 'DBDriver' => 'MySQLi', 'DBPrefix' => '', 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'charset' => 'utf8mb4', 'DBCollat' => 'utf8mb4_general_ci', 'swapPre' => '', 'encrypt' => false, 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 3306, ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
تكوين خادم الويب
استخدم وظيفة "Host" في ServBay للوصول إلى مشروع CodeIgniter عبر خادم الويب. أضف مضيف جديد في إعدادات "Host" في ServBay:
- الاسم:
My First CodeIgniter Dev Site
- النطاق:
servbay-codeigniter-test.local
- نوع الموقع:
PHP
- نسخة PHP: اختر
8.3
- دليل جذر الموقع:
/Applications/ServBay/www/servbay-codeigniter-app/public
لخطوات الإعداد التفصيلية، يرجى الرجوع إلى إضافة الموقع الأول.
إضافة كود عينة
أضف الكود التالي في ملف app/Controllers/Home.php
:
namespace App\Controllers;
use CodeIgniter\Controller;
class Home extends Controller
{
public function index()
{
return 'Hello ServBay!';
}
public function memcached()
{
$cache = \Config\Services::cache();
$cache->save('key', 'Hello Memcached!', 60);
$value = $cache->get('key');
return $value;
}
public function redis()
{
$redis = \Config\Services::cache();
$redis->set('key', 'Hello Redis!');
$value = $redis->get('key');
return $value;
}
public function mysqlAdd()
{
$db = \Config\Database::connect();
$db->table('users')->insert([
'name' => 'ServBay',
'email' => '[email protected]',
]);
return 'User added';
}
public function mysql()
{
$db = \Config\Database::connect();
$users = $db->table('users')->get()->getResult();
return json_encode($users);
}
}
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
الوصول إلى الموقع
افتح المتصفح وقم بزيارة الرابط التالي:
https://servbay-codeigniter-test.local
: سترى الصفحة تعرضHello ServBay!
.
أمثلة على قواعد البيانات NoSQL
مثال على Memcached
تثبيت امتداد Memcached
امتداد Memcached مثبت مسبقاً في ServBay، لذا لا حاجة لتثبيته إضافياً.
تكوين Memcached
قم بتكوين معلومات اتصال Memcached في ملف
app/Config/Cache.php
:phppublic $memcached = [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 1, ];
1
2
3
4
5استخدام Memcached
استخدم التخزين المؤقت في المتحكم:
phppublic function memcached() { $cache = \Config\Services::cache(); $cache->save('key', 'Hello Memcached!', 60); $value = $cache->get('key'); return $value; }
1
2
3
4
5
6
7إضافة مسار إلى
app/Config/Routes.php
:php$routes->get('/memcached', 'Home::memcached');
1افتح المتصفح وزر رابط https://servbay-codeigniter-test.local/memcached
مثال على Redis
تثبيت امتداد Redis
امتداد Redis مثبت مسبقاً في ServBay، لذا لا حاجة لتثبيته إضافياً.
تكوين Redis
قم بتكوين معلومات اتصال Redis في ملف
app/Config/Cache.php
:phppublic string $handler = 'redis'; public $default = [ 'host' => '127.0.0.1', 'password' => null, 'port' => 6379, 'timeout' => 0, 'database' => 0, ];
1
2
3
4
5
6
7
8
9استخدام Redis
استخدم التخزين المؤقت في المتحكم:
phppublic function redis() { $redis = \Config\Services::cache(); $redis->save('key', 'Hello Redis!'); $value = $redis->get('key'); return $value; }
1
2
3
4
5
6
7إضافة مسار إلى
app/Config/Routes.php
:php$routes->get('/redis', 'Home::redis');
1افتح المتصفح وزر رابط https://servbay-codeigniter-test.local/redis
أمثلة على قواعد البيانات العلائقية
مثال على MySQL
تكوين MySQL
قم بتكوين معلومات اتصال MySQL في ملف
app/Config/Database.php
:phppublic $default = [ 'DSN' => '', 'hostname' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_codeigniter_app', 'DBDriver' => 'MySQLi', 'DBPrefix' => '', 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'charset' => 'utf8mb4', 'DBCollat' => 'utf8mb4_general_ci', 'swapPre' => '', 'encrypt' => false, 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 3306, ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19إنشاء ملف الترحيل
استخدم أداة CLI الخاصة بـ CodeIgniter لإنشاء ملف ترحيل:
bashphp spark make:migration create_users_table
1تحرير ملف الترحيل
ابحث عن ملف الترحيل المنشأ حديثًا في دليل
app/Database/Migrations
وقم بتحريره لتعريف هيكل جدول قاعدة البيانات:phpuse CodeIgniter\Database\RawSql; public function up() { $this->forge->addField([ 'id' => [ 'type' => 'INT', 'constraint' => 5, 'unsigned' => true, 'auto_increment' => true, ], 'name' => [ 'type' => 'VARCHAR', 'constraint' => '100', ], 'email' => [ 'type' => 'VARCHAR', 'constraint' => '100', 'unique' => true, ], 'created_at' => [ 'type' => 'TIMESTAMP', 'default' => new RawSql('CURRENT_TIMESTAMP'), ], 'updated_at' => [ 'type' => 'TIMESTAMP', 'default' => new RawSql('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), ], ]); $this->forge->addKey('id', true); $this->forge->createTable('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
26
27
28
29
30
31
32تشغيل الترحيل
استخدم أمر الترحيل لـ CodeIgniter لتشغيل الترحيل وإنشاء جدول قاعدة البيانات:
bashphp spark migrate
1إضافة مسار
أضف المسارات التالية إلى
app/Config/Routes.php
:php$routes->get('/mysql-add', 'Home::mysqlAdd'); $routes->get('/mysql', 'Home::mysql');
1
2إدراج بيانات المستخدم
قم بإدراج بيانات المستخدم في المتحكم:
phppublic function mysqlAdd() { $db = \Config\Database::connect(); $db->table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; }
1
2
3
4
5
6
7
8
9استخدام MySQL
استدعاء قاعدة البيانات في المتحكم:
phppublic function mysql() { $db = \Config\Database::connect(); $users = $db->table('users')->get()->getResult(); return json_encode($users); }
1
2
3
4
5
6افتح المتصفح وزر
https://servbay-codeigniter-test.local/mysql-add
وhttps://servbay-codeigniter-test.local/mysql
مثال على PostgreSQL
تكوين PostgreSQL
قم بتكوين معلومات اتصال PostgreSQL في ملف
app/Config/Database.php
:phppublic $default = [ 'DSN' => '', 'hostname' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_codeigniter_app', 'DBDriver' => 'Postgre', 'DBPrefix' => '', 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'charset' => 'utf8', 'DBCollat' => 'utf8_general_ci', 'swapPre' => '', 'encrypt' => false, 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 5432, ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19إنشاء ملف الترحيل
استخدم أداة CLI الخاصة بـ CodeIgniter لإنشاء ملف ترحيل:
bashphp spark make:migration create_users_table
1تحرير ملف الترحيل
phpuse CodeIgniter\Database\RawSql; public function up() { $this->forge->addField([ 'id' => [ 'type' => 'INT', 'constraint' => 5, 'unsigned' => true, 'auto_increment' => true, ], 'name' => [ 'type' => 'VARCHAR', 'constraint' => '100', ], 'email' => [ 'type' => 'VARCHAR', 'constraint' => '100', 'unique' => true, ], 'created_at' => [ 'type' => 'TIMESTAMP', 'default' => new RawSql('NOW()'), ], 'updated_at' => [ 'type' => 'TIMESTAMP', 'default' => new RawSql('NOW()'), ], ]); $this->forge->addKey('id', true); $this->forge->createTable('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
26
27
28
29
30
31
32تشغيل الترحيل
استخدم أمر الترحيل لـ CodeIgniter لتشغيل الترحيل وإنشاء جدول قاعدة البيانات:
bashphp spark migrate
1إضافة مسارات
أضف المسارات التالية إلى
app/Config/Routes.php
:php$routes->get('/pgsql-add', 'Home::pgsqlAdd'); $routes->get('/pgsql', 'Home::pgsql');
1
2إدراج بيانات المستخدم
قم بإدراج بيانات المستخدم في المتحكم:
phppublic function pgsqlAdd() { $db = \Config\Database::connect(); $db->table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; }
1
2
3
4
5
6
7
8
9استخدام PostgreSQL
استدعاء قاعدة البيانات في المتحكم:
phppublic function pgsql() { $db = \Config\Database::connect(); $users = $db->table('users')->get()->getResult(); return json_encode($users); }
1
2
3
4
5
6افتح المتصفح وزر رابط
https://servbay-codeigniter-test.local/p;pgsql-add
وhttps://servbay-codeigniter-test.local/pgsql
من خلال الخطوات السابقة، قد أتممت بنجاح إنشاء وتشغيل مشروع CodeIgniter، واستخدام ميزات ServBay لإدارة والوصول إلى مشروعك، وربط عدة قواعد بيانات للتعامل مع البيانات. آمل أن يساعدك هذا المقال في البدء بسرعة مع CodeIgniter وتطبيقه على مشاريعك.