السلام عليكم ورحمة الله وبركاته ... وبعد
تحية طيبة للجميع ...
بإختصار ولجعل المعنى أوضح بالنسبة للمبرمجين فنقول أن API هي عبارة عن مجموعة من الدوال تخدم شئ معين وتقوم بتسهيله .. كلام جميل
الآن دعني أعطي مثال يوضح الصورة أكثر ..
افترض أن لدي جدول في قاعد البيانات وكان إسم هذا الجدول هو student وكان فيه حقلين هما id,name وهما يمثلان رقم الطالب و اسم الطالب ... كلام جميل ...
الآن لكي أتعامل مع هذا الجدول فإنني احتاج لعمليات كثيرة جداً مثل :
الإستعلام منه
الإدخال
الحذف
البحث
وووو ... إلخ
كلام جميل ولكن قد يقول أحدهم هذا شئ بسيط فأنا أستطيع عمل هذا على MySQL نقول نعم ولكن نحن نريد الصورة أبسط من ذلك فنحن سنستخدم بالفعل MySQL ولكن سنضع العملية في صورة أبسط ..
لذلك أنا الآن أنوي عمل Student API ووظيفتها تسهيل التعامل مع الجدول Student ...
كلام جميل إذا كل ما أحتاجه هو عمل قائمة بالدوال التي تجعل من التعامل مع الجدول Student بسيط للغاية عندها سأقول :
كود:
function student_connect($user,$pass,$dbname,$host='localhost')
function student_getid()
function student_getname()
function student_get_firstid()
function student_get_nextid()
function student_get_previousid()
function student_get_lastid()
function student_get_firstname()
function student_get_nextname()
function student_get_previousname()
function student_get_lastname()
function student_get_record()
function student_remove_all()
function student_remove($id)
function student_update ($id,$name,$where_id)
function student_insert($id,$name)
function student_save_infile($filepath)
...
كما تلاحظ الآن فلا يوجد أي عبارة MySQL أمامي وكل ما أراه هي دوال تتعامل مع الجدول Student فعلى سبيل المثال لاحظ الدالة student_insert فهي تأخذ باراميترين هما id و name ...
وبهذه الدالة أنا أخفيت في الحقيقة استعلام الإدخال وسهلت العملية للمستخدم بحيث أنه فقط سيضع للدالة الرقم والإسم وهي ستقوم بالباقي دون أن يعلم المستخدم عن محتويات هذه الدالة وببساطة سيكون شكل هذه الدالة من الداخل كالتالي :
كود PHP:
function student_insert($id,$name)
{
//set of operations here
$q_handle = mysql_query("INSERT INTO Student VALUES(".$id.",'".$name."')");
if(!$q_handle)
die('Sorry.. You can not insert new data to student table at this time');
else
echo 'Insert data successful';
}
فلاحظ الزحمة التي أغنيته عنها وبكل بساطة عندما يريد المستخدم أن يدخل صف في الجدول فلن يحتاج لمعرفة هذه الزحمة وكل مايحتاجه الآن هو إدخال الصف بإستدعاء الدالة فقط كالتالي :
كود PHP:
student_insert(570,'Abdulah');
والآن لاحظ الفرق الذي عملته هذه الدالة فلقد قامت بتسهيل الكثير للتعامل مع جدول الطلاب ومن هذا المنطلق يطلق على مجموعة دوال student بأنها student API ...
أما لمن يريد أن يرى مثال حي فلينظر لمدونة وورد بريس والتي تحتوي على دوال كثير تقوم بتسهيل التعامل مع نظام المدونة بالكامل مثل تسهيل التعامل مع جداول المدونة في قاعدة البيانات ودوال للقوالب وهكذا وستجد أن الدوال تبدأ بـ wp أي إختصار لـ word-press وبهذه الطريقة قام مطوروا هذا النظام بتغليف وإخفاء جميع التعاملات الصعبة لنظامهم عن المستخدم وإعطاء دوال بسيطة تسهل عليه العمليات ..
وبالنسبة للسؤال عن PEAR و ADODB فهي تغلف أيضاً العمليات وهذا في الحقيقة ماجاءت لأجله OOP ولكن حسب علمي أن API تطلق على الدوال وليس الكلاسات والكائنات ..
وأرجوا أن تكون الصورة قد إتضحت وهذا مالدي الآن فإن أخطأت فمن نفسي والشيطان وإن أصبت فمن الله عز وجل
تحياتي
أخوكم عبدالله عيد