- اولا يجب إتباع المعايير القياسية في كتابة الكود .
راجع http://www.swalif.net/softs/swalif45/softs249109/
- ثانيا اتباع طريقة واضحه لبناء التطبيقات وسأشرح أوضح وأفضل طريقة لذلك:
* عند البدء في كتابة تطبيق ما مثلا (news) يجب عليك تحديد خصائص التطبيق مثلا (add, edit , view , index) وهذا يأعنى أن ستقوم ببنائ تطبيق أخبار يحتوى يمكن من خلاله اضافة , تعديل , عرض , قائمة خبر أو أخبار .
* بعد تحديد التطبيق وخصائص بشكل واضح بقي لنا الطريقة المثالية لكتابة كود هذا التطبيق وهي أن يكون هذا التطبيق في ملف news.php ويحتوى على صنف class بإسم news ويحتوى هذا الصنف على طرق/خصائص method بهذا الخصائص add, edit , view , index وبهذا الشكل لم يبقى لدينا سوى كتابة الكود البرمجي لكل خاصية... الان هذا هو شكل الملف news.php
كود PHP:
<?php
class news {
function index() {} // عرض قائمة بالاخبار
function view($id=false) {} // عرض الخبر , نحتاج رقم الخبر لعرضه
function add() {} // اضافة خبر
function edit() {} // تحرير خبر
}
?>
من النظره الأولى ستجد ان التطبيق واضح لك ولا يوجد أي صعوبه في فهمه او تتبع مشكله ما فيه .
* المتحكم controller وهو خطوة مهمة ... ويتولى مهمة تنفيذ وتشغيل هذا التطبيق الذي يأتي على شكل صنف class او اي برنامج آخر ... سوف نعمل صفحه index.php للاستدعاء التطبيق وتشغيله , تحتوى هذه الصفحه على متحكم صغير بنفس طريقة بيئات العمل تمام ولكنه بشكل مناسب لتطبيقاتك .
كود PHP:
<?php
list(,$class, $method, $id) = explode('/',$_SERVER['PATH_INFO'],4);
if(file_exists("$class.php")) {
require_once("$class.php"); // استيراد news.php
$object = new $class; // إنشاء كائن من صنف الاخبار news class
if(method_exists($object, $method)) { // التأكد من الخاصية موجوده method exists
call_user_func_array(array($object, $method), $id); // تنفيذ الخاصة وتمرير المتغيرات لها method
} else {
echo 'Error: Method not found.';
}
} else {
echo 'Error: Script not found';
}
?>
سيقوم المتحكم السابق بتنفيذ تلقائي حسب معطيات المرسله ... سيعمل استيراد للملف + انشاء الكائن + تنفيذ الداله المطلوبه مع تمرير المتغير لها ان وجد .
* روابط التطبيق سيتصبح بهذا الشكل:
كود PHP:
http://localhost/index.php/class/method/id
news-index: http://localhost/index.php/news/index
news-view: http://localhost/index.php/news/view/1
......
وقس على ذلك بقي التطبيقات التى سوف تطورها .
* أصبح لدينا الان المتحكم controller وهو index.php + التطبيق module وهو الاخبار news.php كل ما علينا الان هو اكمال التطبيق... مثال بسيط ل news.php
كود PHP:
<?php
class news {
function index() {
echo 'news::index()';
}
function view($id=null) {
if($id) {
echo 'News Number '.$id;
} else {
echo 'Error: No news ID';
}
}
function add() {
echo 'news::add()';
}
function edit() {
echo 'news::edit()';
}
}
?>
* الخلاصة: عليك من الان وصاعدا بناء تطبيقاتك على شكل أصناف class .
* الفائده: تنظيم التطبيق وسهولة نقله الى بيئات عمل او دمجه مع تطبيقات أخرى و القدره على التحكم بالتطبيق من خلال المتحكم وإضافة نظام صلاحيات بسهوله + سجل للعمليات + فلترة المدخلات ... الخ .
(لم اراجع الموضوع لغويا او املائيا
)
مراجع:
PHP: call_user_func_array - Manual
PHP: method_exists - Manual
تم رفع وتثبيت الموضوع نظرا لأهميته للمبرمجين