السلام عليكم
هدف هذا المقال هو تصميم طبقة لتجريد البيانات لاستخدامها مع قواعد البيانات ، (Data Abstraction Layer (DAL)،،، لكي نتفادي تعقيدات الـMySQL ونركز على برنامجنا الأساسي ،، أيضا لنجعل شفرة (كود) برنامجنا مرتبا ونظيف واحترافي.
لمن هذا الدرس:
لكل من يحسن التعامل مع لغة الـPHP و الـMySQL.
لديك إلمام بالـOOP "البرمجة الكائنية التوجه"(المام بسيط )
الغرض من هذا المقال
غرضنا هو كما أسلفنا إنشاء بريمج يريحنا من تعقيدات الـMySQL ، كالاتصال والاستعلام ، مع وضع خوارزمية مثالية في الاتصال والاغلاق لكي نحصل على أفضل أداء لبرنامجنا ولنتصيد الأخطاء بكل سهولة ويسر ونحافظ على ترتيب ونظافة كود برنامجنا.
تعريف الكائنات (Object)
الكائن التعريفي الخاص بقاعدة البيانات الخاصة بنا سيشمل المتغيرات المحلية local variable والبنية constructor.
اولاً المتغيرات المحلية Local Variables:
نحن سنحتاج المتغيرات المحلية لمراقبة معلومات اتصالاتنا و استعلاماتنا بالإضافة لتتبع اي اتصلات مفتوحة تركناها.
سوف نبداء بالفئة "class" الخاصة بقواعد البيانات ،،، نحتاج فقط الى تعريف الفئة "class" و المتغيرات:
كود PHP:
class Database
{
var $database_host;
var $database_name;
var $database_user;
var $database_pass;
var $database_link;
}
الآن سوف ننتقل الى البنية
سوف نقم باعطاء قيم متغيرات معلومات الاتصال الخاصة بناء بقاعدة البيانات.
كود PHP:
function Database()
{
$this->database_user = "root";
$this->database_pass = "";
$this->database_host = "localhost";
$this->database_name = "phpsd";
}
حان وقت كتابة دوال التحكم بمعلومات الاتصال
كود PHP:
function changeUser($user)
{
$this->database_user = $user;
}
function changePass($pass)
{
$this->database_pass = $pass;
}
function changeHost($host)
{
$this->database_host = $host;
}
function changeName($name)
{
$this->databse_name = $name;
}
function changeAll($user, $pass, $host, $name)
{
$this->database_user = $user;
$this->database_pass = $pass;
$this->database_host = $host;
$this->database_name = $name;
}
حقيقةً لقد أمسكنا بالكرة الآن
الآن يجب ان نبدا بتأسيس الاتصال :
كود PHP:
function connect()
{
$this->database_link = mysql_connect($this->database_host, $this->database_user, $this->database_pass) or die("غير قادر على الاتصال ");
mysql_select_db($this->database_name) or die ("غير قادر على فتح قاعدة البيانات التس اسمها ". $this->database_name);
}
لإغلاق الاتصال :
كود PHP:
function disconnect()
{
if(isset($this->database_link)) mysql_close($this->database_link);
else mysql_close();
}
قبل أن نبدا بالاستعلام يجب أولا أن نتاكد من أن اتصالنا تم بنجاح مع قاعدة البيانات
كود PHP:
function query_chk($qry)
{
if(!isset($this->database_link)) $this->connect();
$temp = mysql_query($qry, $this->database_link) or die("خطأ: ". mysql_error());
}
والآن
كود PHP:
function query($qry)
{
if(!isset($this->database_link)) $this->connect();
$result = mysql_query($qry, $this->database_link) or die("Error: ". mysql_error());
$returnArray = array();
$i=0;
while ($row = mysql_fetch_array($result, MYSQL_BOTH))
if ($row)
$returnArray[$i++]=$row;
mysql_free_result($result);
return $returnArray;
}
}
الان اصبح لدينا البريمج جاهز للعمل وهذا مثال له :
كود PHP:
<?php
// مكان ملف البريمج
include("database_class.php");
// التعريف الابتدائي
$db = new Database();
// الاستعلام
$q = $db->query("SELECT * FROM users WHERE email= mail@php.sd");
echo '<table><tr><th>UserID</th><th>UserName</th>';
echo '<th>RealName</th><th>E-mail</th></tr>';
foreach($q as $user)
{
echo '<tr><td>'.$user['userid'].'</td><td>'.$user['username'].'</td>';
echo '<td>'.$user['realname'].'</td><td>'.$user['email'].'</td></tr>';
}
echo "</table>";
// by M.Aljaaly
// mail@php.sd
?>
أتمنى أكن قد أفدتكم
المصدر :
http://www.php.sd/portal/content/view/19/1/