Codeigniter.. عندما تكون البرمجة .. متعة بحق (2)
الوسوم : codeigniter, PHP, إطار عمل, الجزء الثاني, برمجة, تعلم, دروس
يوليو 25
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اخوتي الأفاضل .. اعود إليكم بتكملة لموضوعي السابق بخصوص Codeigniter
اكتفيت في موضوعي السابق فقط بتوضيح تجربتي “المتواضعة” قبل Codeigniter
قبل ان ابدأ في إستكمال الموضوع .. اريد ان اوضح فقط بعض النقاط التي اعتقد بأنني سأسعد جداً بتوضيحها لكم .. وستسهل علينا جميعاً الأمر ايضاً .. فقط لنعرف لماذا نحن موجودين في هذا الموضوع … بسم الله :
- هذا الموضوع ليس لتحديد فيما إذا كان استخدام أطر العمل مهم ام لا . لذا ارجوا عدم الخوض في النقاش بخصوص هذه النقطة
- هذا الموضوع ليس لتحديد فيما إذا كان إطار العمل Codeigniter اقوى من غيره ام لاً .. انا هنا لأريكم الأسباب التي ستجعلكم تستخدمونه بإذن الله
- هذا الموضوع ليس لتعليم طريقة التعامل الكامل مع الكائنات البرمجية Class . هنا موضوع مخصص بهذا الشأن من إنشاء اخي عبدالله عيد
دورة في : مفهوم OOP - نظراً لأنني لا احب تعريب المصطلحات الانجليزية لأنها تفقد معناها . سأقوم بإستخدام المصطلحات الانجليزية في الشرح .. والتي يعرفها جميعكم اعتقد..
- ارجوا ان نبقي الحوار في إطار التعامل مع Codeigniter فقط .. المشاكل .. الحلول .. التنصيب .. الإعدادات .. إلخ
مصطلحات :
CI = Codeigniter
Library = مكتبة
Libraries = مكتبات
Plugin = إضافة
Plugins = إضافات
Hook = خطاف
Hooks = خطاطيف
Controller = ملف التحكم
Controllers = ملفات التحكم
Model = موديل
Models = موديلات
View = ملف العرض
Views = ملفات العرض
Core = اللُب
Extending = تمديد
لتحميل آخر نسخة من CI من هنا
دليل الاستخدام
منتدى CI
الـWiki ( يمكنك البحث عن إضافات بداخله )
كيفية التنصيب :
قم بفك ضغط الملف .. وقم برفع ما بداخل مجلد System إلى موقعك ليصبح الوصول لملف الـ index.php بهذه الطريقة :
http://www.example.com/index.php
او قم برفع مجلد system نفسه إلى الموقع ليصبح الوصول إلى ملف index.php بهذه الطريقة :
http://www.example.com/system
ومن ثم ادخل إلى :
system\application\config\config.php
وقم بتعديل عنوان الموقع ( ضع سلاش في آخر الرابط ) :
[php]
$config['base_url'] = "http://your-site.com/";
[/php]
وتحكم في باقي الإعدادات حسب إحتياجك ..
أولاً : لماذا علي ان استخدم CI ؟
الأسباب النظرية :
- لأنك تريد ان تنظم أعمالك جيداً
- لأنك لا تريد ان تبرمج بطريقة بدائية مما ينتج عنها تأخر في التنفيذ وتأخر في تطوير المهارات البرمجية
- لأنك لا تريد ان تمتلك كمية ملفات كبيرة وفي النهاية تكتشف ان تقريباً 50% منها كان مجرد تكرار ملفات
- لأنك تريد ان تقدم لعملائك برمجة بجودة عالية وسرعة فائقة مما سيبهرهم ويعود عليك بالنفع ( السمعة , التكلفة )
- لأنك تريد ان تطور مهاراتك وتدخل في درجة إحترافية من اساليب البرمجة . ولكنك تريد ايضاً ان تبقى الأمور بسيطة بحيث ان تنفذ الأكواد بطريقتك الخاصة ( بمعنى انك لن تشعر وكأنك تبرمج بلغة اخرى )
الأسباب العملية :
- لأنك تريد إطار عمل خفيف الحجم ولا يأخذ مساحة كبيرة بدون داعي
- لأنك تريد ان تتعامل مع إطار عمل إحترافي لإختصار الأوامر الكثيرة في أسطر متعددة فقط
- لأنك تريد ان تتعامل مع نظام MVC لتسهيل البرمجة وإختصار الوقت عند التعديل وتطبيق إضافات
- لأنك تريد حماية كاملة وبالطريقة التي تفضلها
- لأنك تريد التركيز على إنتاج المشروع. ولن تضيع وقتك في إنشاء إطار العمل الخاص بك اولاً ومن ثم ستأخذ وقت أكثر من ذلك لتنفيذ المشروع.
- لأنك تريد إطار عمل يمتلك دليل إستخدام بسيط وشامل جميع النقاط التي قد تفكر بها في بدايتك وحتى لاحقاً إذا نسيت نقطة معينة
*بكل تأكيد هناك نقاط اكثر بكثير مما ذكرت. ولكني حاولت التركيز على المهم
ثانياً : ما هي المميزات التي يقدمها لي CI ؟
- حجم خفيف ( 1 ميجا بايت )
- نظام MVC
- سرعة فائقة في تنفيذ الأكواد ( بل ان Rasmus Lerdorf مخترع لغة الـ PHP قد ابدى إعجابه بهذه السرعة في مؤتمر frOSCon أغسطس 2008 , شاهد هنا)
liked CodeIgniter because it is faster, lighter and the least like a framework
وكان CI قد تفوق على أشهر أطر العمل مثل CakePHP و Symfony و Zend Framework في إختبار قام به مخترع لغة الـ PHP
حيث كانت سرعة CI في الاختبار : 0.03 ثانية
وكانت سرعة CakePHP في الاختبار : 0.19 ثانية
وكانت سرعة Zend Framework في الاختبار : 0.04 ثانية
وكانت سرعة Symfony في الاختبار : 0.05 ثانية
… نعود مرة اخرى - يعمل على PHP4 و PHP5
- روابط نظيفة ( Friendly URLs ) وآمنة من SQL injection و XSS
- CI يحتوي على مجموع كبيرة من أهم الـ Libraries التي قد تحتاجها اثناء برمجتك, مثال :
- Database, Email, File Uploading, FTP, Image Manipulation, Session, Zip Encoding .. وغيرها الكثير
- تعدد اللغات بسهولة
- لا يتطلب ان يكون لديك خبرة في التعامل مع Template Engine فيمكنك عرض المحتوى بالطريقة التي تريدها ( سواء التعامل مع Template Engine او لا )
- يدعم التعامل مع قواعد بيانات اخرى غير Mysql فقط
- يمتلك نظام Logs يمكنك من خلاله متابعة الأخطاء التي قد تظهر للزوار ويظهر ايضا عمليات الـ Debug ومعلومات اخرى عند تنفيذ الاوامر
- نظام Cache سلس جدا
- نظام URI Routing ( اعادة توجيه للروابط حسب طلبك و دعم Regex كذلك )
*أيضاً هناك مميزات اكثر من هذه بكثير ولكنني ذكرت ما يحضرني فقط .. يمكنكم مشاهدة المميزات كلها من دليل الاستخدام .. ولكنه باللغة الانجليزية ( سأعمل على تعريبه بإذن الله لاحقاً )
ثالثا: طريقة عمل CI
كما نعلم أن CI يعمل تحت نظام MVC … ولكن ماهو نظام MVC اصلاً ؟
MVC اي اختصار لـ Model-View-Controller
ببساطة …:
Model : ملف تقوم من خلاله بتنفيذ عمليات قواعد البيانات ( سواء نداء او حذف او تحديث او إدراج )
بالطبع يمكنك ان تنشئ ملفات Models كما تريد .. ولكن يفضل ان تجعل ملف واحد فقط لكل صفحة ( Controller )
View : هو ملف العرض . أي الـ Template للصفحة ويمكنك ادراج معلومات بداخله تأتي بها عن طريق الـ Controller
Controller : هي الصفحة التي تقوم فيها بتنفيذ كل الأوامر التي تريدها .. يتضمن ذلك دمج Model مع View وإدخال معلومات اخرى إلى View وإدراج الـ Libraries والـ Plugins والـ Helpers
وأسم الـ Controller سيكون هو اسم الصفحة في الرابط
بإختصار .. الـController هو الأساس .. و View و Model هم الإضافة للـ Controller …
رابعاً : ماذا عن الـ Library والـ Helper والـ Plugin والـ Hooks ؟
سريعاً …
Library :
مكتبة إضافية تقوم بتنفيذ مهمة معينة .. لنقل مثلاً مكتبة FTP.. عندما تريدها ستقوم بإستدعائها .. وتستخدم خواصها في الـ Controller وننتهي .. لن تقوم بصناعة أكواد الـ FTP كلها في الـ Controller وتستخدم functions و و و … ![]()
تعتمد الـ Library على Class
كيفية الاستدعاء :
[php]
$this->load->library(‘library_name’);
[/php]
Helper :
يعتبر مثل المكتبة .. ولكنه اصغر بقليل .. بمعنى ان الـ Helper يقوم بعمليات بسيطة وصغيرة .. مثلاً هناك Cookie Helper وظيفته العامل مع الكوكيز .. إنشاء , إستدعاء , مسح.
بخلاف الـ Library .. يعتمد الـ Helper على الـ Functions فقط
كيفية الاستدعاء :
[php]
$this->load->helper(‘helper_name’);
[/php]
Plugin :
وظيفة الـ Plugin هي تقريباً مشابهة للـ Helper ولكن الفرق ان الـ Plugin يستخدم Function واحد فقط يقوم بالمهمة .. ولا يعتمد على Functions متعددة ..
كيفية الاستدعاء :
[php]
$this->load->plugin(‘plugin_name’);
[/php]
Hook :
سوف اتحدث عنه لاحقاً بإذن الله نظراً لأن وظيفته مرتبطة بعمليات الـ Core Extending وتنفيذ الاضافات على نظام الـ CI .. وبصراحة اريد ان اتعمق معكم في هذا الموضوع بإذن الله .. لكي لا يأتي احد ويقول : CI لا يحتوي على كذا … حسناً لقد جهزوا لك العدة لتقوم انت بتطوير الـ CI بنفسك اذا لم يعجبك
طبعاً يمكنك وضع اياً من هذه الاضافات في مجلدات فرعية .. مثال :
نريد ان نصنع مكتبة مثلاً للتعامل مع منطقة الاعضاء في الموقع .. سنضعها في مجلد فرعي بإسم user .. ليصبح الوصول إليها عن طريق هذا الرابط :
application/libraries/user
لذى .. عند استدعاءها .. سوف نضع اسم المكتبة بهذا الشكل :
[php]
$this->load->library(‘user/library_name’);
[/php]
حسناً
بعد ان أخذنا نظرة عامة على طريقة العامل مع CI .. ما رأيكم في ان نصنع اول تجربة لنا ؟
اولاً دعوني أوضح طريقة التعامل مع المجلدات بداخل مجلد System ..
كل ما بداخل مجلد System يعتبر مجلدات تخص الـ Core الخاص بـ CI … بإستثناء مجلد application
مجلد application هو مساحة العمل الخاصة بالموقع نفسه ( وليس CI ) ..
بمعنى .. اذا قمت مثلاً بعملية Core Extending فإنك ستضع ملف الـ Library الخاصة بك في مجلد System/libraries …
ولكن اذا كنت تمتلك Library وظيفتها التعامل مع نقطة معينة في الموقع .. فإنك ستضيعها في مجلد application/libraries …
كذلك نفس الموضوع بالنسبة للـ Plugins والـ Helpers
حسناً الآن نحن بداخل مجلد Application ..
لدينا هذه المجلدات .. سأشرحها سريعاً :
- config
يحتوي على إعدادات الموقع . ويمكنك وضع إعداداتك الخاصة في ملف منفصل بالداخل لتستخدمها وقتما تشاء مع Library مثلاً او Plugin
أهم 4 ملفات سنتعامل معهم طوال الوقت هم :- config.php يحتوي على إعدادات عامة
- database.php يحتوي على الإعدادات الخاصة بالتعامل مع قواعد البيانات
- routes.php يحتوي على الخصائص الخاصة بك للتحويل بين الروابط , مثال :
[php]
// index.php/welcome -> index.php/home
$route['welcome'] = "home";
[/php] - autoload.php ملف تقوم فيه بتحديد الإضافات التي تريد ان يتم تحميلها تلقائياً بدون ان تكتب أمر التحميل :
[php]
$this->load->library(‘library_name’);
[/php]
- controllers يحتوي على صفحات الموقع بإختصار
- errors يحتوي على صفحات الأخطاء ( Templates ) يمكنك التعديل عليها بطريقتك الخاصة مثلاً
- helpers يحتوي على جميع الـ Helpers
- hooks يحتوي على جميع الـ Hooks
- language يحتوي على جميع ملفات اللغة
- libraries يحتوي على جميع الـ Libraries
- models يحتوي على جميع الـ Models
- views يحتوي على جميع ملفات الـ View أي الـ ( Templates )
كل ملف جديد في مجلد controllers يساوي صفحة جديدة …. مثال :
test.php يساوي http://www.example.com/index.php/test
روابط CI تعمل بهذه الطريقة :
[html]
http://www.example.com/index.php/class/function/variable
[/html]
سأوضح هذه النقطة اكثر بعد قليل ان شاء الله ..
إذا دخلت إلى http://www.example.com/index.php ستجد ان هناك صفحة ترحيب أولية … ولكن اذا دخلت إلى مجلد controllers ستجد ان اسم الصفحة الترحيبية هو welcome.php .. كيف اذاً اصبحت الصفحة تظهر عند الدخول إلى index.php فقط وليس index.php/welcome ( بالرغم من انك اذا ذهبت ايضاً إلى index.php/welcome ستظهر نفس الصفحة بالتأكيد )
حسناً .. هناك إختيار في ملف config/routes.php يحدد لك الـ Controller الإفتراضي الذي تريده ان يظهر عند الدخول إلى index.php فقط :
[php]
$route['default_controller'] = "welcome";
[/php]
لا تحتاج إلى إضافة تنسيق الملف .. فقط ضع اسم الـ Controller ..
حسناً اعتقد بأننا جاهزون ان شاء الله لإنشاء أول ملف تجربة لنا … بسم الله :
نذهب إلى مجلد application/controller ونحذف اولاً ملف welcome.php .. ثم نصنع ملف جديد خاص بنا اسمه مثلاً home.php …
افتح الملف وضع بداخله الآتي
[php]
<?php
class Home extends Controller {
function index()
{
}
}
?>
[/php]
لاحظ هذه النقاط المهمة :
يجب ان يكون اسم الكلاس بالضبط نفس اسم ملف ( بدون التنسيق طبعاً )
يجب ان يكون مورث من الكلاس Controller ليعمل حسب نظام CI ( مزيد حول فائدة Extends )
يجب ان يحتوي على function بأسم index .. مما يعني ان محتوى هذا function سيظهر بمجرد الدخول إلى index.php/home وكذلك بالتأكيد index.php/home/index
حسناً .. اذا دخلنا إلى index.php/home بالطبع لن يظهر اي شيء امامك .. لأن الصفحة فارغة ..
سوف نضع عبارة أولية للتجربة :
[php]
<?php
class Home extends Controller {
function index()
{
echo ‘Hello World!’;
}
}
?>
[/php]
ادخل مرة اخرى إلى index.php/home وسوف تجد عبارة ” Hello World! ” مطبوعة
الآن اعتقد بأن الأمر واضح .. الـ function بأسم index .. يساوي صفحة الـ index لقسم Home
دعوني اوضح الفكرة أكثر .. اذا قمنا بعمل function جديد مثلاً بأسم Test داخل كلاس Home .. :
[php]
<?php
class Home extends Controller {
function index()
{
echo ‘Hello World!’;
}
function test()
{
echo ‘Page Test.. ‘;
}
}
?>
[/php]
الآن ادخل إلى index.php/home/test سوف ترى ما أعنيه ..
وهو كما ذكرت في السابق :
[html]
http://www.example.com/index.php/class/function/variable
[/html]
اسم الـ Class يأتي اولاً .. ثم الـ Function ثم الـ Variables بعدها بأي كمية كانت .. لا يوجد عدد محدود وسوف اتطرق للـ Variables بعد قليل إن شاء الله
الآن طبعاً من الخطأ تماماً ان نطبع الكلام عن طريق echo وإلا .. فقد عادت ريما لعادتها القديمة…
كما تعلمنا سابقاً .. فإن لكل Controller ملف View أي ( Template ) … دعونا ننشئ ملف View بداخل مجلد views ونسميه كذلك home.php
هذا الملف الآن يتعامل كلياً بأكواد HTML .. لذلك ضع ما تريد .. ولكني افضل :
[html]
<h1>Hello World!</h1>
[/html]
الآن إذا ذهبت إلى صفحة index.php/home بالتأكيد سوف تجد الصفحة كما هي في البداية .. لاننا مازلنا نقوم بطباعة الكلمة عن طريق echo .. حسناً دعونا الآن نرى كيف نحضر ملف view إلى الـ Controller ..
[php]
<?php
class Home extends Controller {
function index()
{
$this->load->view(‘home’);
}
function test()
{
echo ‘Page Test.. ‘;
}
}
?>
[/php]
لنذهب مرة اخرى إلى index.php/home .. نعم لقد تم إدراج ملف الـ view بنجاح ![]()
مزيد للمعلومات حول View من دليل الاستخدام ( بالإنجليزية )
حسناً بالتأكيد انكم لاحظتم ان طريقة كتابة امر الإدراج متشابهة في أغلب الأحوال . مثال :
[php]
$this->load->view(”);
$this->load->library(”);
$this->load->helper(”);
$this->load->plugin(”);
[/php]
فقط لأنك من الطبيعي لاحقاً سوف تخمن ان الجزء المطلوب تغييره هو الجزء الاخير فقط .. ![]()
وهذا من اكبر الاسباب التي تعجبني في CI .. يعطيك بالضبط ما تفكر به ..
حسناً .. نمتلك الآن ملف الـ View ويعمل بنجاح ..
ماذا إذا اردنا إدخال متغير من الـ Controller إلى ملف الـ View ؟
بسيطة …
[php]
<?php
class Home extends Controller {
function index()
{
$data['text'] = ‘Hello World!’;
$this->load->view(‘home’,$data);
}
function test()
{
echo ‘Page Test.. ‘;
}
}
?>
[/php]
داخل ملف الـ View
[html]
<h1><?=$text?></h1>
[/html]
اذا الأمر واضح الآن .. الـ Key في المصفوفة بداخل الـ Controller يصبح متغير داخل الـ View .. مثال آخر
الـ Controller :
[php]
<?php
class Home extends Controller {
function index()
{
$data['text'] = ‘Hello World!’;
$data['how'] = ‘How are you ?’;
$data['thanks'] = ‘Thanks ‘;
$this->load->view(‘home’, $data);
}
}
?>
[/php]
بداخل ملف الـ View :
[html]
<h1><?=$text?></h1> <h2><?=$how?></h2> <h3><?=$thanks?></h3>
[/html]
حسناً دعونا نتعمق اكثر … ماذا إذا اردت ان اربط متغير بملف view ؟ مثلاً ..
لدي ملف View بأسم Header .. اريد ان ادرجه بداخل الـ View الرئيسي …
سهلة
قم بعمل ملف جديد في مجلد application/views بأسم header.php .. مثلاً سنضع داخله :
[html]
<h1>Header here</h1>
[/html]
اذهب إلى الـ Controller مرة اخرى .. الآن سنعرف متغير بداخل المصفوفة data .. ليحتوي على ملف الـ view الخاص بالـ Header … ولكن سيكون الوضع مختلف قليلاً …
[php]
<?php
class Home extends Controller {
function index()
{
$data['header'] = $this->load->view(‘header’, ”, TRUE);
$data['how'] = ‘How are you ?’;
$data['thanks'] = ‘Thanks ‘;
$this->load->view(‘home’, $data);
}
}
?>
[/php]
ملف الـ View :
[html]
<?=$header?> <h2><?=$how?></h2> <h3><?=$thanks?></h3>
[/html]
الآن الـ function بأسم view يأخذ 3 مدخلات .. وهم :
1- اسم ملف الـ view وهو header في هذه الحالة
2- تمرير بعض المتغيرات إلى ملف الـ view ( كما شاهدنا في السابق ). وفي هذه الحالة نحن لا نريد ان نضع اي شيء فيه لذلك سنجعله فارغ
3- يقبل فقط TRUE او FALSE .. ووظيفتة هذا المدخل او ان يجعل معلومات ملف الـ View هذا قابلة لأن تكون بداخل متغير لإستخدامها في اي مكان آخر … إذا قمت بجعله FALSE .. ستجد ان الـ View يتم طباعته تلقائياً بدون حتى وجود المتغير $header في ملف الـ view الرئيسي …
* تنبيه.. طبعا اذا كنت تريد طباعة ملف view بدون تمرير متغيرات او جعله قابل ليكون بداخل متغير .. ستستخدم مدخل واحد فقط وهو لأسم ملف الـ view كما كتبناه في الأعلى ..
حسناً .. مازال هناك بعض النقاط الاخرى … شاهد المثال :
الـ Controller :
[php]
<?php
class Home extends Controller {
function index()
{
$data['how'] = ‘How are you ?’;
$data['items'] = array (
‘item1′ => ‘This is item 1′,
‘item2′ => ‘This is item 2′
);
$this->load->view(‘home’, $data);
}
}
?>
[/php]
ملف الـ View :
[html]
<h1><?=$how?></h1> <ul> <li><?=$items['item1']?></li> <li><?=$items['item2']?></li> </ul>
[/html]
نستنتج من هذا انه يمكننا ايضاً تمرير مصفوفة إلى ملف الـ view
بل يمكنك حتى استخدام foreach لإستخراج محتوى المصفوفة
ملف الـ View :
[html]
<h1><?=$how?></h1>
<ul>
<?php foreach ($items as $item) { ?>
<li><?=$item?></li>
<?php } ?>
</ul>
[/html]
حسناً هذه كانت فقط البداية للتعريف بجزء بسيط من اسلوب عمل CI …
اتمنى ان تكون الفكرة وصلتكم وسوف انتظر منكم ان تخبروني هل نجحت التجارب معكم ام لا .. اتمنى ان قد وفقت في الشرح ..
ودائماً انصح بالرجوع إلى دليل الإستخدام لإحتوائه على جميع التفاصيل التي قد تتسائل عنها
ومازلت عند وعدي إن شاء الله سوف اقوم بتعريب دليل الإستخدام ولكن في وقت فراغي بإذن الله .. واتمنى اذا كان هناك احد يريد مساعدتي في ذلك سوف أسعد جدا جدا …
هذا الشرح هو كاملاً ( والكمال لله وحده ) من جهدي الشخصي .. كل ما ارجوه منكم اخوتي هو الدعاء لي ولوالدي وللمسلمين …
كما اذكر مرة اخرى .. ارجوا ان نبقى النقاش فقط فيما يتمحور حول CI والتعامل معه …
سبحانك اللهم وبحمدك .. اشهد ان لا إله إلا انت .. استغفرك وأتوب إليك …
اخوكم في الله ..
مصعب الزيني
- نشر في: PHP

يوليو 27th, 2009 الساعة 8:08 م
بسم الله الرحمن الرحيم
موضوع مثير بالفعل
اللهم اجعله في ميزان حسناتك..
يوليو 29th, 2009 الساعة 2:42 ص
بالنسبة للمساعدة في التعريب فقد سبق و رأيت أحد الإخوة مهتما بتعريب الإطار في الرابط
http://codeigniter.com/forums/viewthread/108567/#611769
و لست أدري أأنت هو أم لا !
دمت في رعاية الله .
يوليو 29th, 2009 الساعة 2:49 ص
اللهم آمين … جميع ان شاء الله اخي .. وأتمنى ان تكون قد استفدت
يوليو 29th, 2009 الساعة 2:54 ص
اخي الفاضل …
ما يتحدث عنه الأخ Adriano في منتدى CI هو (تقريباً) تعريب الملفات وليس دليل الاستخدام, بمعنى ملفات اللغة الموجودة في مجلد language والخاصة بالمكتبات upload و ftp وغيرها ….
وهذه هي الصفحة التي تحتوي على الملفات التي تم تعريبها إلى الآن :
http://codeigniter.com/wiki/Arabic/
اتمنى ان يتم عمل صفحة مماثلة في الـ Wiki ولكن لدليل الاستخدام .. بإذن الله سأبحث عن الطريقة الصحيحة لوضع الترجمة العربية لدليل الاستخدام رسميا في موقع CI …
ارق التحية
أغسطس 13th, 2009 الساعة 2:26 ص
مجهود رائع اخي مصعب … بارك الله فيك وفي انتظار مزيد من الدروس
سبتمبر 3rd, 2009 الساعة 3:56 ص
يعطيك الف عافية ..
بارك الله في جهودك
سبتمبر 28th, 2009 الساعة 12:53 ص
اهنيك اخوي مصعب .
شرح ولا اروع .
سلمت يداك .
انا سمعت بالـ Codeigniter من قبل . واخذت التوتاريل تبعه . وطبقت دروسه . بصراحة كان رهيب وشي فضيع
بس بصراحة اخاف اشتغل فيه . ليس بخوف من قلة الحماية . بالعكس احس انه محمي بشكل رائع
لكن اخاف إذا كبر البرنامج راح اتعقد . وتكثر الكلاسات والكودات.
يمكن يبغالي اتشجع واجرب ابني موقع كامل به . واجرب .
اتمنى يكون في سكربتات عندك او في اي مكان اقدر انزلها تكون معمولة بالـ Codeigniter
وياريت تخلص التعريب تعطينا خبر
اتمنى منك التوفيق والتقدم . وكمل مشوارك ولا يردك اي احد . فلكل شخص له رايه في Codeigniter
واعمل بالمثل : ارضاء الناس غاية لا تدرك
تحياتي لك بالتوفيق
على فكرة ياريت تضيفني . باستخدام ايميلي
اخوك
زاهر
سبتمبر 28th, 2009 الساعة 9:34 م
الأخ العزيز زاهر
خوفك من دخول عالم CI وإطارات العمل هو شيء طبيعي جداً ولكن استطيع بكل بساطة ان اخبرك انك في هذه النقطة بالذات .. سوف تقوم بخطوة مهمة جدا جدا جدا في حياتك البرمجية
فأنت هنا تنتقل إلى اسلوب برمجة ونظام برمجة إحترافي جدا وتستطيع ان تقول ببساطة ” عالمي ” ( في حالة انك اتبعت المعايير البسيطة لإستخدام CI )
تخيل انك عندما تقدم عرض مثلاً لبرمجة الموقع ستذكر فيه :
1- هيكل برمجي قوي وثابت .. يمكن تطويره لاحقاً بكل بساطة بدون الحاجة لإعادة برمجة اي جزء من الموقع
2- نظام لغات منفصل تماماً لإمكانية تعدد اللغات في الموقع
3- حماية قصوى ضد عمليات الاستغلال XSS وحقن قواعد البيانات
4- اكواد نظيفة تماماً تمكن اي مبرمج ( متوسط الخبرة ) من التعديل عليها بكل سهولة
إلخ …
طبعاً هذه النقاط تعتبر تقريباً من اهم ما يتميز به CI … ففي حالة انك اضفت هذه المميزات إلى عرض البرمجة الذي تقدمه ( سواء لشركة او لشخص ) .. صدقني ردة الفعل ستكون مذهلة جداً .. العميل سوف ينبهر تماماً بهذه المميزات حيث انك بكل بساطة تستطيع ان تقول ان 90% من المبرمجين العرب لا يقدمون هذه المميزات ابدا.
على كل حال .. نصيحتي لك .. تشجع وتوكل على الله وان شاء الله ستجد ان الأمر سهل جداً .. وتذكر ان لك اخاً هنا ان شاء الله يساعدك في حل اي مشكلة تواجهك
بخصوص السكربتات وتعريبها بصراحة اخي الحبيب اجد انها نقطة غير مفيدة نوعاً ما للأخوة الذين يريدون تعلم CI … فأنت هنا بالضبط كما لو انني اعطيتك كعكة وقلت لك تعلم من مكوناتها واصنع مثلهاً! حسناً قد تتعرف على بعض مكوناتها ولكن هناك بعض التفاصيل التي لن تنتبه لها بمجرد النظر لهذه الكعكة بل يجب عليك ان تتعلم خطوة بخطوة كيف تم صنع هذه الكعكة..
على كل حال اخي الحبيب يمكنك الاطلاع على سكربتات عديدة تم برمجتها بإستخدام CI من خلال القسم المخصص لهذا الغرض بالمنتدى الرسمي الخاص بـ CI من خلال هذا الرابط
وبخصوص معارضة الناس لإستخدام CI او إطارات العمل عموماً .. فصدقني اخي العزيز كلاً له اسلوبه في البرمجة وإخراج المواقع .. ولكن ما يهم في آخر الأمر, هو النتيجة
CI يسهل علينا إنهاء هذه النتيجة بصورة جميلة وبسرعة فائقة .. هذي هي خلاصة الأمر بكل بساطة
تقبل أرق التحية اخي زاهر.
اخوك
مصعب
سبتمبر 29th, 2009 الساعة 10:39 ص
اخ مصعب .
اولا اشكرك كثيرا على ردك الي شجعني كثير وخلاني اعمل شي ولاحظت انه بصراحة تقدر تعمل عمل ضخم بوقت قياسي وبشكل احترافي .
لذلك ترقب . اول عمل لي بالـ CI
اشكرك بعنف اخي مصعب . وإلى الامام
وكلامك صحيح ان التعريب نقطة غير مفيدة . لان الشرح سهل
وغير كذا شرحك ولا اروع
وعلى فكرة في مواضيع لك في سوالف عن المجلة مو موجودة هنا . ياريت تضيفها هنا بحيث اكون ارجع للمودنة من غير البحث عن مواضيعك في سوالف
تحياتي لك بالتوفيق
سبتمبر 29th, 2009 الساعة 10:59 ص
اولاً صبحك الله بالخير
جميل جدا اخي الحبيب اتمنى لك التوفيق وارجوا ان اكون من اوائل من يرون هذا العمل ( يعني لا تنسانا )
وأشكرك اخي على إطرائك الجميل واسأل الله ان يتقبل ….
بخصوص الأجزاء الاخرى التي لم يتم نقلها هنا بعد فأنا اعمل على اعادة تنسيقها وان شاء الله خلال يومين سأقوم بطرحها هنا لأكمل السلسلة…
أرق التحية
أكتوبر 4th, 2009 الساعة 10:35 ص
السلام عليكم ورحمة الله وبركاته
اخوي مصعب في سؤال ..
كيف استخدم AMFPHP مع CI ؟
وياريت يكون فيها درس بسيط او رابط ممكن يفيدني
تحياتي لك
زاهر
أكتوبر 5th, 2009 الساعة 7:46 ص
جهد رائع أخي مصعب،
ننتظر باقي السلسلة..
أكتوبر 5th, 2009 الساعة 4:02 م
وعليكم السلام ورحمة الله وبركاته
بصراحة اخي لا امتلك درس ولكن خلال بحثي وجدت هذه الروابط :
هذه مكتبة موجودة في موقع CI من هنا
وهذا موضوع في المنتدى :
http://codeigniter.com/forums/viewthread/47787/
وهذا موضوع ايضاً في مدونة اعتقد ان الموضوع مشروح فيها جيداً :
http://philpalmieri.com/2009/04/codeigniter-amfphp-library/
ارق التحية
أكتوبر 5th, 2009 الساعة 4:05 م
اشكرك اخي عبدالرحمن على مرورك الجميل وان شاء الله الجزئين الباقيين سأقوم بطرحهما هذا الاسبوع لنكمل الجزء الخامس ان شاء الله
ارق التحية.
نوفمبر 6th, 2009 الساعة 2:18 م
يعطيك العافيه اخي على المجهود الحلو
وهو فعلا اطار رائع
فبراير 4th, 2010 الساعة 8:44 م
السلام عليكم
شكرا خيو مصعب على الشرح كنت فى الحاجه للمعرفه عن ال CI
الله يعطيك العافيه يارب