كود إغنيتر CodeIgniter إطار عمل مفتوح المصدر بلغة بي إتش بي PHP
إطار عمل مفتوح المصدر، يستعمل في بناء تطبيقات الويب بلغة بي إتش بي



كود إغنيتر ‏ هو إطار عمل مفتوح المصدر، يستعمل في بناء تطبيقات الويب بلغة بي إتش بي.
تم إصدار أول نسخة بتاريخ 26 فبراير 2006، أما آخر إصدار كان لنسخة 3.1.5 بتاريخ 19 يونيو 2016.

ما هو CodeIgniter ؟

هو اطار عمل مفتوح المصدر يعمل تحت بيئه PHP لتطوير تطبيقات ويب ديناميكية ذات كفاءه عاليه وفي نفس الوقت باقل مجهود ووقت ممكن عن طريق استخدام المكتبات والخلايا الجاهزه المضمنه ضمن اطار العمل.

تتضمن تلك المكتبات العديد من الاجراءات الجاهزه للتعامل مع كافة اجزاء المشروع مثل عمليات الاتصال والتعامل مع قواعد البيانات, وتحويلات الروابط, ومكتبات خاصه بتطبيقات جافا سكربت وغيرها. مما يضمن لك انجاز العديد من المهام المعقده في وقت قصير وبدون جهد.

ما هي مزايا العمل باستخدام CodeIgniter ؟



  • توفير الوقت للمبرمج اثناء قيامه بتطوير اي تطبيق.
  • سهوله ومرونه في كتابة الكود اثناء البرمجه نظرا لتوفر المكتبات والاجراءات الجاهزه
  • تنظيم ملفات ومجلدات, واكواد الموقع بشكل رائع مما يسهل عليك متابعة المشروع عند اعادة العمل فيه بعد وقت.
  • يعتمد على اساليب OOP في العمل.


كيف يعمل CodeIgniter


CodeIgniter مبني علي مفهوم الـ MVC (Models - Views – Controllers) ولكل جزء وظيفه :


  • Models
    هي الطبقه المسئوله عن التعامل مع قواعد البيانات
  • Views
    هي الطبقه التي تمثل واجهة التطبيق وهو الجزء المرئي من التطبيق والذي يظهر للمستخدم
    ويتضمن في العاده اكواد التصميم
  • Controllers
    تمثل هذه الطبقه حلقة الوصل التي تربط ما بين طبقة البيانات (Models) وطبقة الواجهه (Views)


CodeIgniter هو إطار تطبيق ويب من أجل PHP. إنه يمكّن المطورين من بناء تطبيقات الويب بشكل أسرع، ويقدم العديد من مكتبات التعليمات البرمجية والمساعدات المفيدة التي تسرع من المهام الشاقة في PHP. يعتمد CodeIgniter على تصميم معياري؛ مما يعني أنه يمكنك تنفيذ مكتبات محددة حسب تقديرك - مما يزيد من سرعة الإطار. سيحاول هذا البرنامج التعليمي إظهار أساسيات إعداد إطار العمل، بما في ذلك كيفية إنشاء تطبيق عالمي مرحب يستخدم نهج MVC.

لماذا الاطار؟

تسمح الأطر للبنية في تطوير التطبيقات من خلال توفير فئات ووظائف قابلة لإعادة الاستخدام والتي يمكن أن تقلل من وقت التطوير بشكل ملحوظ. بعض الجوانب السلبية للأطر هي أنها توفر فئات غير مرغوب فيها، مما يضيف انتفاخ في الكود و يجعل التطبيق أكثر صعوبة في التنقل.
يعد CodeIgniter إطارًا خفيفًا، وعالي الأداء. في حين، أنه مثالي للمبتدئين (بسبب
منحنى التعلم الصغير)، كما أنه مثالي لتطبيقات الويب الكبيرة والمتطلبة. تم تطوير CodeIgniter بواسطة EllisLab ولديه توثيق كامل، وسهل الفهم.
توثيق فيما يلي قائمة بأسباب ما يجعل CodeIgniter إطارًا ذكيًا للاستخدام؟بصمة صغيرة مع أداء استثنائي


  • نهج MVC للتطوير (على الرغم من أنه يقوم على شكل مفكك للغاية مما يسمح بالمرونة)
  • يولد عناوين المواقع ودية وسهلة لمحركات البحث
  • قابل للتوسع بسهولة
  • يعمل على كل من (PHP 4 (4.3.+2+ و 5
  • دعم لمعظم قواعد البيانات الرئيسية بما في ذلكMySQL (4.1+) ،MySQLi ، MS SQL ،Postgres ،Oracle ،SQLite،
    و ODBC.
  • أمان التطبيق هو مركز النشاط
  • عمليات التخزين المؤقت سهلة
  • هناك العديد من المكتبات والمساعدات لمساعدتك في العمليات المعقدة مثل البريد الإلكتروني، ومعالجة الصور،
    التحقق من صحة النموذج، وتحميل الملفات، والجلسات، والتطبيقات متعددة اللغات وإنشاء apis من أجل تطبيقك
  • يتم تحميل معظم المكتبات عند الحاجة فقط مما يؤدي إلى تقليص الموارد اللازمة



بالنسبة للمبتدئين، MVC هي الاحرف الأولى من الكلمات الموديل، العرض، أداة التحكم. وهي نمط برمجة يستخدم في تطوير
تطبيقات الويب. هذا النمط يعزل واجهة المستخدم وبرامج الخلفية (أي تتفاعل قاعدة البيانات من بعضها البعض. تطبيق
ناجح لهذا يتيح للمطورين تعديل واجهة المستخدم الخاصة بهم أو برامج الخلفية دون التأثير
على الأمور الأخرى. يزيد MVC أيضًا من مرونة التطبيق من خلال القدرة على إعادة استخدام النماذج أو المشاهدات
مرة أخرى). فيما يلي وصف ل MVC.

  • النموذج: يتعامل النموذج مع البيانات الخام وتفاعل قاعدة البيانات وسيحتوي على وظائف
    مثل إضافة سجلات إلى قاعدة بيانات أو تحديد سجلات قاعدة بيانات محددة. في نموذج CI
    يكون المكون غير مطلوب ويمكن تضمينه في وحدة التحكم.
  • العرض: يتعامل العرض مع عرض عناصر التحكم في البيانات وواجهة المستخدم مع المستخدم.
    في CI قد يكون العرض صفحة ويب أو موجز RSS أو بيانات ajax أو أي "صفحة" أخرى.
  • وحدة التحكم: تتصرف وحدة التحكم على أنها في المنتصف بين العرض والنموذج، وكما يوحي الاسم،
    وحدة التحكم هي أيضا مكان لتحميل المكتبات والمساعدات. في CI، وحدة التحكم هي أيضا مكان لتحميل المكتبات والمساعدات.


مثال لنهج MVC سيكون من خلال نموذج الاتصال.


  1. يتفاعل المستخدم مع طريقة العرض عن طريق ملء نموذج وإرساله.
  2. يتلقى جهاز التحكم بيانات POST من النموذج، يرسل جهاز التحكم هذه البيانات إلى النموذج
    التي يتم تحديثها في قاعدة البيانات.
  3. ثم يرسل النموذج نتيجة قاعدة البيانات إلى وحدة التحكم.
  4. يتم تحديث هذه النتيجة في العرض وإظهارها للمستخدم.

قد يبدو هذا عمل كثير يتوجب القيام به. لكن، صدقني، عندما تعمل باستخدام تطبيق كبير، فإن القدرة على إعادة استخدام النماذج أو العروض توفر قدرًا كبيرًا من الوقت.

الخطوة 1: تنزيل CodeIgniter


ستحتاج إلى البدء في تنزيل CodeIgniter وتحميله إلى خادمك. وجه متصفحك
إلىhttp://www.codeigniter.com/ و
انقر على زر التنزيل الكبير. في هذا البرنامج التعليمي نستخدم الإصدار 1.70.

الخطوة 2: تثبيت واستكشاف CodeIgniter

بمجرد تنزيل CodeIgniter، كل ما عليك فعله هو فك ضغطه، وإعادة تسمية المجلد "CodeIgniter_1.7.0"
إما باسم التطبيق أو، في هذه الحالة، "CI" وتحميله إلى خادم PHP و MySQL.
الآن بعد أن أصبح على الخادم الخاص بك، سأشرح ما هي كل المجلدات والملفات من أجله:




  • يخزن مجلد النظام جميع الملفات التي تجعل CI تعمل.
    • يتطابق مجلد التطبيق تقريبًا مع محتويات مجلد النظام
      ولهذا فإن المستخدم يمكن أن يكون لديه ملفات خاصة بهذا التطبيق، على سبيل المثال إذا
      أراد المستخدم فقط تحميل مساعد في تطبيق واحد فإنه يقوم بوضعه في مجلد النظام / التطبيق / مساعدات
      بدلا من مجلد النظام / مساعدات.
      • يخزن مجلد التهيئة جميع ملفات التهيئة ذات الصلة بالتطبيق. التي
        تتضمن معلومات حول ماهية المكتبات التي يجب أن يقوم التطبيق بتحميلها وتفاصيل قاعدة البيانات.
      • يخزن مجلد وحدات تحكم كافة وحدات التحكم للتطبيق.
      • يخزن مجلد الأخطاء كافة صفحات خطأ القالب للتطبيق. عندما
        يحدث خطأ يتم إنشاء صفحة الخطأ من أحد هذه القوالب.
      • يخزن مجلد المساعدات جميع المساعدات المخصصة لتطبيقك.
      • مجلد الخطافات هو الخطافات التي تعمل على تعديل وظيفة ملفات CI الأساسية،
        يجب استخدام الخطافات فقط من قبل المستخدمين المتقدمين لـ CI
      • يخزن مجلد اللغة خطوطًا نصية يمكن تحميلها من خلال مكتبة اللغة
        لإنشاء مواقع متعددة اللغات.
      • يخزن مجلد المكتبات جميع المكتبات الخاصة بالتطبيق الخاص بك.
      • يخزن مجلد النماذج جميع نماذج التطبيق.
      • يخزن مجلد العرض جميع طرق العرض للتطبيق.

    • يخزن المجلد المؤقت كافة ذواكر التخزين المؤقت التي تم إنشاؤها بواسطة مكتبة التخزين المؤقت.
    • يخزن المجلد codeigniter كل العمليات الداخلية التي تجعل CI تعمل.
    • يخزن مجلد قاعدة البيانات كل برامج تشغيل قاعدة البيانات والفئة التي تمكنك من
      الاتصال بقاعدة البيانات.
    • يخزن مجلد الخطوط جميع الخطوط التي يمكن استخدامها من قبل مكتبة معالجة الصور.
    • يخزن مجلد المساعدات جميع المساعدات الأساسية لـ CI ولكن يمكنك وضع المساعدات التابعة
      هنا والتي يمكن الوصول إليها من قبل جميع التطبيقات الخاصة بك.
    • يقوم مجلد اللغات بتخزين جميع ملفات لغة CI الأساسية التي تستخدم مكتباتها والمساعدات.
      استخدام. يمكنك أيضًا وضع مجلدات اللغة الخاصة بك والتي يمكن الوصول إليها بواسطة جميع التطبيقات الخاصة بك.
    • يخزن المجلد مكتبات جميع مكتبات CI الأساسية ولكن يمكنك وضع المكتبات الخاصة بك
      هنا والتي يمكن الوصول إليها من قبل جميع التطبيقات الخاصة بك
    • يخزن مجلد السجلات جميع السجلات التي تم إنشاؤها بواسطة CI.
    • يخزن مجلد المكوِّنات الإضافية جميع المكونات الإضافية التي يمكنك استخدامها. المكونات الإضافية متطابقة تقريبًا
      مع المساعدات، تعتبر الإضافات وظائف يقصد أن يشاركها المجتمع.
    • يخزن مجلد السقالات جميع الملفات التي تجعل فئة السقالات تعمل.
      توفر السقالات واجهة CRUD مريحة للوصول إلى المعلومات في قاعدة البيانات الخاصة بك
      أثناء التطوير.

  • دليل المستخدم يحتوي على دليل للمستخدم من أجل CI.
  • ملف index.php هو الشيء الذي يقوم بكل السحر في CI كما يسمح لك بتغيير
    اسم النظام ومجلدات التطبيق.


الخطوة 3: تكوين CodeIgniter


الحصول على CI وتشغيله بسيط نوعًا ما. يتطلب معظمها تحرير بعض
ملفات التكوين.
تحتاج إلى إعداد CI ليتوجه إلى عنوان URL الأساسي الصحيح للتطبيق. للقيام بذلك، افتح نظام / تطبيق / تكيل/ config.php و
وقم بتحرير عنصر مصفوفة قاعدة _url للتوجه إلى خادمك ومجلد CI.

1 $config['base_url'] = "http://localhost/ci/";

الخطوة 4: اختبار CodeIgniter

سنجري اختبارًا سريعًا لمعرفة ما إذا كان CI جاهزًا ويعمل بشكل صحيح. انتقل إلى http: // localhost / ci /
يجب أن ترى ما يلي.



الخطوة 5: تكوين CodeIgniter Cont.

إذا كنت جاهزًا للعمل، فيجب أن ننهي التهيئة. بدأنا في تكوينه خصيصًا لتطبيق مرحباً بالعالم الجديد. إذا كنت ترغب في استخدام قاعدة بيانات مع التطبيق الخاص بك، (وهو ما نقوم به في هذا البرنامج التعليمي.) افتح نظام / تطبيق / تكوين / database.php وقم بتعيين عناصر المصفوفة التالية إلى قيم المقابلة لها. هذه الشيفرة تتصل إلى MySQL
قاعدة بيانات تسمى "مرحباً بالعالم " على مضيف محلي باسم المستخدم "جذر"، وكلمة المرور، "جذر".
1
2
3
4
5
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "root";
$db['default']['database'] = "helloworld";
$db['default']['dbdriver'] = "mysql";


بالإضافة إلى ذلك، بما أننا سنستخدم قاعدة البيانات بعض الشيء، فإننا نريد أن يتم التحميل التلقائي لذلك يجب أن لا نقوم بتحميلها
على وجه التحديد في كل مرة نقوم بالاتصال. افتح ملف نظام / تطبيقات / تهيئة / autoload.php
وقم بإضافة "قاعدة بيانات" إلى مصفوفةمكتبات التحميل التلقائي.
1 $autoload['libraries'] = array('database');


حالياً، سيكون لدى إعداد CI وحدة تحكم افتراضية تسمى "welcome.php"؛ يمكنك العثور على هذا في المجلد نظام/تطبيقات /وحدات التحكم. بالنسبة لهذا البرنامج التعليمي، قم بحذفه وافتح الملف نظام/تطبيقات /تهيئة/ routes.php الخاص بك. قم بتغيير عنصر المصفوفة الافتراضي للإشارة إلى وحدة التحكم " مرحباً بالعالم ".
1 $route['default_controller'] = "Helloworld"


لدى CI أيضًا ملف عرض لا نحتاجه. افتح المجلد نظام/تطبيقات /عرض
واحذف ملف welcome_message.php.
الخطوة 6: إنشاء قاعدة بيانات مرحباً بالعالم

نظرًا لأن هذا ليس برنامجاً تعليميًا على MySQL، سأبقي هذا القسم قصيرًا قدر الإمكان. قم بإنشاء قاعدة بيانات تسمى "مرحباً بالعالم "و
قم بتشغيل SQL التالي من خلال phpMyAdmin (أو عميل MySQL مشابه).
01
02
03
04
05
06
07
08
09
10
11
12
CREATE TABLE `data` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`text` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

INSERT INTO `data` (`id`, `title`, `text`) VALUES(1, 'Hello World!', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla
sapien eros, lacinia eu, consectetur vel, dignissim et, massa. Praesent suscipit nunc vitae neque. Duis a ipsum. Nunc a erat. Praesent
nec libero. Phasellus lobortis, velit sed pharetra imperdiet, justo ipsum facilisis arcu, in eleifend elit nulla sit amet tellus.
Pellentesque molestie dui lacinia nulla. Sed vitae arcu at nisl sodales ultricies. Etiam mi ligula, consequat eget, elementum sed,
vulputate in, augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;');


الخطوة 7: إنشاء نموذج مرحباً بالعالم

تعتبر النماذج اختيارية في CI، ولكنها تعتبر أفضل ممارسة من أجل استخدامها. إنها مجرد فئات PHP التي تحتوي
الوظائف التي تعمل مع المعلومات من قاعدة البيانات. اذهب
قدما واصنع ملف helloworld_model.php
في مجلد النظام / التطبيق / النماذج.
في هذا الملف، قم بإنشاء فئة نموذج مرحباً بالعالم، وقم بإنشاء نموذج مرحباً بالعالم ودالة تسمى الحصول على البيانات.
في وظيفة الحصول على البيانات
سوف نقوم باستخدام وظائف قاعدة بيانات السجل النشطة التي تسرع أزمنة تطوير قاعدة البيانات عند العمل
مع CI وقواعد البيانات. أساسا، فهي وظائف مبسطة لإنشاء التساؤلات.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
class Helloworld_model extends Model {

function Helloworld_model()
{
// Call the Model constructor
parent::Model();
}

function getData()
{
//Query the data table for every record and row
$query = $this->db->get('data');

if ($query->num_rows() > 0)
{
//show_error('Database is empty!');
}else{
return $query->result();
}
}

}
?>


الخطوة 8: إنشاء وحدة تحكم مرحباً بالعالم

لنقم بإنشاء وحدة تحكم ستظهر العرض، وتحميل النموذج. بهذه الطريقة، عندما
تذهب إلى العنوان http: //localhost/ci/index.php/helloworld/، سترى البيانات من قاعدة البيانات.
في المجلد النظام / التطبيق / وحدات التحكم، قم بإنشاء ملف يسمى helloworld.php.
في هذا الملف الجديد، سننشئ فئة تحمل نفس اسم الملف.
داخل هذه الفئة، تحتاج إلى إنشاء وظيفة تسمى "الفهرس". هذه هي الوظيفة التي سيتم
عرضها عندما لا يتم توفير غيرها - على سبيل المثال عندما يكون http: //localhost/ci/index.php/helloworld
قد تمت زيارته. إذا، على سبيل المثال، أنشأنا وظيفة تسمى foo، يمكننا العثور على هذا على شكل http: //localhost/ci/index.php/helloworld/foo/.
الشيء الأساسي الذي يجب تذكره هو كيفية بناء CI لعناوين URL الخاصة بها؛ على سبيل المثال، http://host/codeignitordirectory/ind...class/function

في وظيفة فهرس التحكم، نحتاج إلى تحميل النموذج، الاستعلام عن قاعدة البيانات، وتمرير هذه
البيانات المستعلم عنها إلى طريقة العرض. لتحميل أي موارد إلى CI على سبيل المثال، المكتبات،
المساعدات، أو طرق العرض، أو النماذج، نستخدم فئة التحميل. بعد تحميل النموذج، يمكننا الوصول إليه من خلال
اسم نموذجها ووظيفة معينة. لتمرير البيانات إلى طريقة العرض نحتاج إلى تعيينها إلى عنصر مصفوفة
ثم تمرير المصفوفة - التي تعيد إنشاء عناصر المصفوفة كمتغير في ملف العرض.
01
02
03
04
05
06
07
08
09
10
11
12
13
<?php
class Helloworld extends Controller{
function index()
{
$this->load->model('helloworld_model');

$data['result'] = $this->helloworld_model-><span class="sql">getData</span>();
$data['page_title'] = "CI Hello World App!";

$this->load->view('helloworld_view',$data);
}
}
?>


إذا قمنا بزيارة http: //localhost/ci/index.php/helloworld/ الآن، فلن يعمل؛ هذا لأن ملف العرض غير موجود.

الخطوة 9: قم بإنشاء عرض مرحباً بالعالم

ملف العرض هو ما يراه المستخدم ويتفاعل معه، ويمكن أن يكون جزءًا من صفحة أو الصفحة بأكملها. يمكنك تمرير مصفوفة من المتغيرات إلى طريقة العرض من خلال الوسيطة الثانية
من وظيفة نموذج التحميل. لصنع طريقة العرض الخاصة ببرنامجنا التعليمي، قم بإنشاء ملف جديد يسمى helloworld_view.php في المجلد نظام/تطبيقات /عرض . بعد ذلك، نحتاج فقط إلى إنشاء html العادي، عناصر الرأس
و الجسم، ثم الترويسة و فقرة للمعلومات من قاعدة البيانات. لعرض كل
السجلات الواردة من قاعدة البيانات، وضعناها في حلقة "foreach"
والتي تدورعبر جميع العناصر.
01
02
03
04
05
06
07
08
09
10
11
12
<html>
<head>
<title><?=$page_title?></title>
</head>
<body>
<?php foreach($result as $row):?>
<h3><?=$row->title?></h3>
<p><?=$row->text?></p>
<br />
<?php endforeach;?>
</body>
</html>


ربما لاحظت أننا نستخدم بنية php بديلة، وهذا يوفر طريقة مناسبًة
تحفظ الوقت لكتابة البيانات الناتجة.
الخطوة 10: Ta-da وبعض الإضافات

عند زيارة "http: //localhost/ci/index.php/helloworld/"، أنت
يجب أن ترى شيئًا مشابهًا لهذا.



لكننا لم ننته بعد. هناك بعض الأشياء التي يمكنك القيام بها لتحسين تجربة CodeIgniter -
مثل إزالة ذلك الفهرس index.php المزعج من عنوان URL. يمكنك إنجاز هذه المهمة عن طريق إنشاء ملف .htaccess في المجلد الجذر، وإضافة الشفرة التالية.
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ ci/index.php/$1 [L]
ستحتاج أيضًا إلى فتح ملف config.php في نظام/تطبيقات/ تهيئة وتحريرعنصر مصفوفة index_page إلى سلسلة فارغة.
1 $config['index_page'] = "";


آخر خدعة أنيقة هي تشغيل إمكانية CI لتحليل بناء جملة PHP بديلة إذا
لم يتم تمكينها من قبل الخادم. للقيام بذلك، افتح الملف نفسه كما كان من قبل، نظام/تطبيقات /تهيئة/ config.php، وقم بتعيين عنصر المصفوفة إعادة كتابة علامات قصيرة إلى TRUE.
1 $config['rewrite_short_tags'] = TRUE;


وآمل أن يكون كل شيء على ما يرام! نتطلع إلى رؤية المزيد من البرامج التعليمية CodeIgniter مني في المستقبل.



المرجع:
https://ar.wikipedia.org/wiki/%D9%83...8A%D8%AA%D8%B1
https://code.tutsplus.com/ar/tutoria...iter--net-2634