Professional Documents
Culture Documents
تعلم برم18
تعلم برم18
<?php
{ class mySQL
جعل الدالة نهائية حتى ل يتم إستنساخ كائن جديد من الفئة //
}{ )(final private function __clone
$obj = mySQL::getObj();
$obj2 = $obj->getConObj();
$obj3 = $obj->getConObj();
$obj4 = $obj->getConObj();
$obj5 = $obj->getConObj();
$obj6 = $obj->getConObj();
$obj7 = $obj->getConObj();
$obj8 = $obj->getConObj();
$obj9 = $obj->getConObj();
$obj10 = $obj->getConObj();
?>
يجب واضع قيم التصال بقاعد ة البيانات فى بانى الفئة حتى يعمل معك الكود بشكل سليم-
الفصل الخامس عشر :النمط المفرد Singleton Pattern 252
بدون أخطاء التصال بقاعد ة البيانات ,فى الكود أاضع القيم الفترااضية للسرفر المحلى "ربما
تختلف من سرفر محلى لخر" .
-تم إنشاء الدالة )( getConObjوالتى تعود بكائن فئة التصال بقاعد ة البيانات .
-تم إنشاء كائن من الفئة mySQLمن خلل الدالة )(getObjكما تقدم شرحه .
-تم إنشاء عده كائنات من فئة التصال بقاعد ة البيانات من خلل الدالة )( , getConObjوتعمدت
واضع عدد كبير من الكائنات المنشأه لتلحظ الوقت الذى يمر حتى يتم إنشاء تلك الكائنات .
سنقوم الن بتعديل الكود السابق وتطبيق مبدأ مشاركة التصال بقاعد ة البيانات وذلك من خلل
تعريف متغير لحفظ كائن التصال المنشأ كالتالى :
<?php
{ class mySQL
$obj = mySQL::getObj();
$obj2 = $obj->getConObj();
Singleton Pattern النمط المفرد: الفصل الخامس عشر 254
$obj3 = $obj->getConObj();
$obj4 = $obj->getConObj();
$obj5 = $obj->getConObj();
$obj6 = $obj->getConObj();
$obj7 = $obj->getConObj();
$obj8 = $obj->getConObj();
$obj9 = $obj->getConObj();
$obj10 = $obj->getConObj();
?>
ويمكن تعديل دالة إنشاء كائن من فئة التصال بحيث يتم إنهاء الفئة وعرض أخطاء التصال
: بقاعد ة البيانات كالتالى
سنضع الن دالة لعمل إستعلم على قاعد ة البيانات وإظهار الخطاء إن وجدت فى الستعلم-
: كالتالى
)if(!$temp
;)die($this->getConObj()->error
;return $temp
}
<?php
{ class mySQL
}
// test
;)($obj = mySQL::getObj
)if($obj->makeQuery("SELECT * FROM users")->num_rows > 1
;"echo "yes
else
;"echo "no
>?
سنتابع لعمل دالة لتسجيل الدخول تعتمد على الفئة السابقة ولشرح مبدأ والوارثة بشئ من
التطبيق سنقوم بوراثة الفئة . mySQL
-ولكن تعريف الدالة)( __constructعلى أنها نهائية يجعلنا ل نستطيع إستخدام بانى الفئة عند
الوراثة فلهذا سنجعل الدالة __)( constructفى الفئة mySQLمحمية فقط ,لننا سنحتاج
إستخدام بانى الفئة فيما بعد .
-عند وراثة الفئة mySQLوإنشاء كائن منها وإنشاء كائن أخر من الفئة الوارثة للفئة mySQLفإذا
تم مناداه دالة التصال بقاعد ة البيانات من الكائنين سيتم عمل إتصالين ولهذا نقوم بتعريف
المتغير $objConعلى أنه ساكن لفتح إتصال واحد لى كائن منشأ من الفئة mySQLأو أحد
الفئات التى ترثها ,ويمكنكم ملحظة هذا بواضع جملة طباعة فى دالة التصال بقاعد ة البيانات
لمعرفة عدد التصال التى يتم فتحها كما فعلنا فى الكواد السابقة .
<?php
{ class mySQL
الفصل الخامس عشر :النمط المفرد Singleton Pattern 258
جعل الدالة نهائية حتى ل يتم إستنساخ كائن جديد من الفئة //
}{ )(final private function __clone
?>
<?php
include_once(__DIR__ .'\mySQL.php');
class myLogin extends mySQL{
الفصل الخامس عشر :النمط المفرد Singleton Pattern 260
تم تضمين الفئة mySQLفى بداية الملف ,وإن أردت أن تعرف ما هو الثابت __ __DIRوأخواته
أدخل على هذا الرابط .
الفئة myLoginقامت بوراثة الفئة . mySQL
قمنا بإنشاء بانى الفئة وإستدعينا بداخلة بانى الفئة للفئة الب . mySQL
والن نريد عمل نمط مفرد لنشاء كائن من الفئة myLoginولكن ل يعقل عند كل وراثة عمل دالة
مختلفة لعمل ذلك ولهذا وجد ما يعرف بالتحميل الزائد للدول أى سيتم تعريف الدالة بنفس
التعريف و نفس السم ونفس الوسائط ,وأيضًا بما أن المتغير $classObjخاص داخل الفئة
mySQLسنقوم بتعريفة أيضًا بنفس السم مره أخرى فى الفئة . myLoginو تصبح الفئة على
النحو التالى :
<?php
;)'include_once(__DIR__ .'\mySQL.php