المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : كلاسات الphp : الدرس مفصل الأول: الأســـــاســـيات الهامه فى php classes



admin
11-01-2013, بتوقيت غرينيتش 03:56 PM
http://www.dzbatna.com/images/icons/iconrote.gif ظƒظ„ط§ط³ط§طھ ط§ظ„php : ط§ظ„ط¯ط±ط³ ط§ظ„ط£ظˆظ„: ط§ظ„ط£ط³ظ€ظ€ظ€ظ€ظ€ط§ط³ظ€ظ€ظ€ظٹط§طھ ط§ظ„ظ‡ط§ظ…ظ‡ ظپظ‰ php classes (http://www.dzbatna.com/t1769945/)





http://www.advphp.com/imgup/images/71881806675172771310.png
(http://www.advphp.com/phpbeginnerssection/305-php-classes-lesson-1-fundamentals)


عوده من جديد زوار موقعنا الكرام, أعتذر عن التأخير فى كتابة دروس البرمجة , نظرا لضيق وقتى هذه الفترة,
وان شاء الله سأحاول بقدر الأمكان أن أنجز بشرح طريقة شىء جديد خلال هذه فترة , ليكون بداية لمشروع الخريطة البرمجية الذى أخبرتكم به........, وحتى أبتعد عن التكرار, فمشروع الخريطة البرمجية سوف أقوم بتجهيزه
من نهايته لاوله , وليس العكس, اى ستجدنى أقوم بإدراج الدروس الخاصه بالخريطة بدءا من الدروس المتقدمه جدا رجوعا للدروس الأوليه , حتى يكون هناك جديد لكل من يريد الاستفاده من هذه الخريطة أول بأول لحين انتهى من تجهيز كافة دروسها,


طبعا الدروس هذه المره سيتم طرحها بشكل مختلف تماما عن الدروس السابقة , لان الخريطة بمجرد تنتهى تماما ان شاء الله , سوف تكون لك قدرة برمجية فائقه بأذن الله وعن ثقه . ولفكرة ستكمن فى طريقة العرض
للخريطه التى سأشرح طريقة فكرتها بأذن الله فى موضوع منفصل.


فى هذا الدرس مفصل سوف نتعرف على واحد من الاشياء المهمه فى الphp, وهى الكلاسات classes
نظرا لقلة الدروس المتعلقة بها, سوف يكون لها حظ وفير جدا فى موقعنا, بحيث نتقن التعامل معها بشكل جيد


ونبدأ بأول درس مفصل فى php classes وهو الأساسيات :




أولا: صوره للفهرس الخاص بالدرس مفصل والذى سنقوم بشرح طريقةه خطوه خطوه بأذن الله:



http://www.advphp.com/imgup/images/30365431525795395420.png


نبدأ على بركة الله ..........




اولا: class:




تعريف الكلاس class: هى عبارة عن مجموعة من المتغيرات $ والfunctions , يتم استخدامها سويا, بحيث
ينتج لنا ما يسمى الكلاس, والتى توفر الكثير من الوقت, فهناك كلاسات جاهزه يستخدمها الكثير من المبرمجين فى برمجياتهم , فمبجرد معرفتهم بأساسيات استخدامها, وهذا ما سنشرح طريقةه, يمكنك أن تستخدم اى كلاس تريدها, وحتى ولو لم تكن مبرمج محترف وقادر على كتابة اى كلاس , فهى ستعطى لك دفعه برمجية قويه فى برمجياتك اذا كانت قدراتك محدوده فى البرمجه


مثال: مثلا يوجد كلاس اسمها كلاس قواعد البيانات , وكود codeها موجود هــنـــا (http://www.dzbatna.com/attachments/411153d1253048099-db_class.zip) , وهى عبارة عن كلاس
يتم استخدامها للتعامل مع قواعد البيانات , من اتصال وجلب وادراج وحذف وادخال بيانات.......الخ


تخيل انك بمعرفه بسيطه بأساسيات الكلاسات, ستتمكن استخدام هذا الملف الذى قد يكون معقد بالنسبة لك بكل سهولة, وهذا ما سيثبته درس مفصلنا ان شاء الله , والدروس القادمه بأذن الله





الصيغة العامه للاستخدام :



رمز Code:
class classname {
رمز Code:

$.......
function........

}





مثال عملى: نفرض انى أريد عمل كلاس تستخدم لكتابة اسمى :

سيكون الكود code كالاتى:



رمز Code:
<?php


رمز Code:

class myname {
function myname(){

echo &quot;my name is mohamed amin\n&quot;; echo &quot;<br>&quot;; } }

?>






الان , سوينا هذه الكلاس البسيطة جدا, لكن نريد ان نعرف كيف سنستخدمها حتى نظهر الجملة joomla

my name is mohamed amin



حتى نقوم بذلك لابد ان نقوم بخطوتين:


1-عمل متغير وتحديد هذا الكلاس لاستخدامها باستخدام الكلمة new
2-الدخول لاى function او متغير$ داخل الكلاس لاستخدامه باستخدام علامة الدخول ->



سنقوم بعمل الخطوه الاولى:


نسمى اى متغير ونكتب الكلمة new + اسم الكلاس السابق


رمز Code:
$use=new myname;




الحين قمنا بعمل متغير وحددنا الكلاسmyname لاستخدامها




نقوم الان بعمل الخطوه الثانيه :


نكتب نفس اسم المتغير اللى مستخدم الكلاس+ ندخل للفانكشن myname باستخدام ->


رمز Code:
$use->myname();




الان لو كتبنا الكود code كامل : الكلاس +new + ->


رمز Code:

class myname {

function myname(){

echo &quot;my name is mohamed amin\n&quot;; echo &quot;<br>&quot;; } }

$use=new myname; $use->myname();

?>



لو استدعيت الملف فى المتصفح, ستجد الجمله راح تظهر لك my name is mohamed amin



حتى نهضم هذه الجزئيه , نأخذ أكثر من مثال عملى .......


مثال عملى 1:


رمز Code:
<?php


رمز Code:

class personal {
public $site=&quot;www.advphp.com&quot;;

function fullname(){

echo &quot; my private site is {$this->site} &quot;; }

}

$usepersonal= new personal ; $usepersonal->fullname();

?>





الناتج:


رمز Code:
my private site is www.advphp.com




استفدنا من المثال السابق, انه فى حال أردت الدخول لاى متغير او فانكشن يمكنك استخدام الجملة joomla


رمز Code:
$this->var



حيث var هى اسم المتغير المراد الدخول له, ولاحظ اننا لن نكتب العلامة $ قبل اسم المتغير




مثال عملى 2 :


رمز Code:
<?php


رمز Code:

class simplemath {
public $num=18;

function math(){ $num2= 2; $sum = $this->num + $num2; echo &quot; the sum of $this->num and $num2 is $sum &quot;; }

}

$usepersonal= new simplemath ; $usepersonal->math();

?>




الناتج:


رمز Code:
the sum of 18 and 2 is 20







ثانيا: extends




الextends بكل اختصار هى تكملة او اضافة ممكن تضيفها لاى كلاس, تخيل انك كاتب كلاس كبيره جدا ومعقده, ونفرض انك تود ان تضيف لها بعض السطور البرمجية بدون الدخول فيها, لذلك سنقوم بعمل كلاس جديده امتدادا للكلاس الاصلية بحيث تشمل هذه الكلاس الممتده الكلاس الاصلية بكافة أوامرها+الكلاس الجديد بكافة أوامرها......



الصيغه العامه للاستخدام:


رمز Code:
class classname2 extends classname1 {


رمز Code:

$........
function.......... }






مثال عملى:


لو خذنا الكلاس السابقة والتى كود codeها هو :


رمز Code:
class myname {


رمز Code:

function myname(){
echo &quot;my name is mohamed amin\n&quot;; echo &quot;<br>&quot;; } }

$use=new myname; $use->myname();





نريد ان نضيف للكلاس السابق كلاس ممتد لها ليظهر اسمى المستعار الثانى


لذلك سيكون الكود code كالاتى:



رمز Code:
class secondname extends myname{


رمز Code:

function displaysecond(){
echo &quot;second name is vista-design&quot;; } }

$useextend= new secondname(); $useextend->displaysecond();






الناتج لهذه الكلاس سو ف يكون كالاتى:



رمز Code:
my name is mohamed amin


رمز Code:

second name is vista-design



شوفت الناتج: يشمل الكلاس الاصلية +الكلاس الممتده ........



http://www.advphp.com/imgup/images/36902092409331441134.png






ثالثا: constructors :




ال constructors , او المشيد , هى اول function يتم كتابتها فى الكلاس, والتى يتم استدعاءها تلقائيا بدون استدعاءها وتنفيذها بمجرد استخدام الكلاس ......


الصيغة العامة:


رمز Code:
class classname {


رمز Code:

function __construct() {
}

}





الحين حتى نثبت انه يتم استدعاءها تلقائيا بدون ان ندخل -> للfunction , سنقوم بعمل كلاس بسيطه وسنقوم بعمل متغير جديد لاستخدام هذه الكلاس فقط, ونشوف الناتج...



رمز Code:
class useconstructor{


رمز Code:

function __construct(){
echo &quot;<br>&quot;; echo &quot;this is the constructor function&quot;; } }

$useconstructor= new useconstructor();





الناتج:



رمز Code:
this is the constructor function




http://www.advphp.com/imgup/images/84420645716068152173.png



لاحظ اننا لم نستخدم عبارة الدخول للfunction كالاتى:


رمز Code:
$useconstructor->construct();



لان هذه الفانكشن يتم استدعاءها بمجرد عمل متغير لاستخدام الكلاس.........






رابعا: visibility:




ال visibility فى الكلاسات, يقصد بها تصاريح استخدام ما بداخل الكلاس, فهناك 3 أنواع من التصاريح :


1- public: وهو التصريح العام, والذى يصرح لاستخدام الكلاس من اى مكان سواء داخل او خارج الكلاس
2- protected: ويقتصر على استخدام الكلاس من خلال الكلاسات المتوارثه فقط (الممتده)
3-private: وهو التصريح الخاص المقتصر فقط على استخدام الكلاس نفسها فقط



الصيغة العامة:



رمز Code:
class classname {


رمز Code:

public $var=&quot;&quot;;
protected $var=&quot;&quot;; private $var=&quot;&quot;;

}





مثال عملى:


رمز Code:
class visibile{


رمز Code:

public $public='public';
protected $protected='protected'; private $private='private';

function usevisible(){

echo $this->public; echo $this->protected; echo $this->private;

} }

$vis= new visibile(); echo $vis->public; // works echo &quot;<br>&quot;; echo $vis->usevisible();





الناتج:


رمز Code:
public


رمز Code:

publicprotectedprivate





http://www.advphp.com/imgup/images/18967794254616740640.png





خامسا: scope resolution operator :






الSRO هى خاصية فى الكلاسات تستخدم للاشارة لمتغير $ او function داخل كلاسا ما,
ولابد ان يكون المتغير حتى نشير له ان يكون ثابت static


مثال عملى:


رمز Code:
class myname2 {


رمز Code:

public static $thename=&quot;mohamed amin&quot;;
function declarescope(){

echo self::$thename; }

}

$use= new myname2; $use->declarescope();




الناتج:


رمز Code:
mohamed amin




http://www.advphp.com/imgup/images/49508032446952773789.png




سادسا: constant:



وهو المتغير الثابت فى الكلاس, الذى قيمته لن تتغير اينما اردت استخدامه من الكلاس



الصيغة العامه:


رمز Code:
class classname{


رمز Code:

const varname=&quot;&quot;;
}




حيث الvarname هى اسم المتغير, ولاحظ اننا لم نحلق المتغير بالعلامة $



مثال عملى :


رمز Code:
class myclass{


رمز Code:

const somevar=&quot;my website is advphp.com&quot;;
function useconstant(){

echo self::somevar; } }

echo myclass::useconstant(); echo &quot;<br>&quot;; echo myclass::somevar;





الناتج:


رمز Code:
my website is advphp.com


رمز Code:

my website is advphp.com





http://www.advphp.com/imgup/images/92934596774670134918.png



بهيك , نكون انتهينا من ما يخص الكلاسات من أساسيات مهمه للدروس القادمة ,
والدروس القادمه ستكون تكثيف قوى فى الكلاسات, بحيث سنعرض أكثر من كلاس ونشرح طريقةها سويا, مع
استغلالها بالكامل, بحيث نكون هضمنا موضوع الكلاسات سويا بشكل جيد




ملاحظه: حتى تتذكر كافة أساسيات الكلاسات: لقد قمت بعمل ملف بسيط به كافة أكواد الاساسيات والأمثلة العملية مجمعه سويا,


الكود code:


رمز Code:
<?php


رمز Code:

//////////////////////////
# class file learning # done by vista-design # www.advphp.com ///////////////////////////

//php4: to demonstrate the class constructor that automatically loaded

class myname {

function myname(){

echo &quot;my name is mohamed amin\n&quot;; echo &quot;<br>&quot;; } }

$use=new myname; $use->myname(); // u will find that the echo is doubled as the function has the same name of the class,so it consider a constructor function not a regular function

///////////////////////////////////////////// #extends ////////////////////////////////////////////

/* class secondname extends myname{

function displaysecond(){

echo &quot;second name is vista-design&quot;; } }

$useextend= new secondname(); $useextend->displaysecond(); // this will print (my name is.... + second name is....) */

/////////////////////////////////////////

///////////////////////////////////////////// #autoload ////////////////////////////////////////////

//auto loading of certain class from afile

/*function __autoload($classname){

require_once $classname. '.php'; }

$useclass = new myclass1(); $useclass = new myclass2(); */

///////////////////////////////////////////// #construcotrs ////////////////////////////////////////////

/* class useconstructor{

function __construct(){ echo &quot;<br>&quot;; echo &quot;this is the constructor function&quot;; } }

$useconstructor= new useconstructor(); // as u see the function will load automatically without accessing using $this */

/////////////////////////////////////////// #visibility using public protected private //////////////////////////////////////////

/* class visibile{

public $public='public'; protected $protected='protected'; private $private='private';

function usevisible(){

echo $this->public; echo $this->protected; echo $this->private;

} }

$vis= new visibile(); echo $vis->public; // works echo &quot;<br>&quot;; echo $vis->usevisible();

*/

//////////////////////////// # scope resolution operator :: allows access to static, constant, and overridden members or methods of a class. ///////////////////////////

/* class myname2 {

public static $thename=&quot;mohamed amin&quot;; // should be static if u want to use ::

function declarescope(){

echo self::$thename; }

}

$use= new myname2; $use->declarescope();

*/

//////////////////// #constant: don't use the $ symbol to declare or use them , #The value must be a constant expression, not (for example) a variable, a class member, result of a mathematical operation or a function call. ///////////////////

class myclass{

const somevar=&quot;mohamed amin&quot;; // don't do $somevar

function useconstant(){

echo self::somevar; } }

echo myclass::useconstant(); echo &quot;<br>&quot;; echo myclass::somevar;

?>







بالتوفيق للجميع


أخوكم : vista-design















التعديل الأخير كان بواسطة vista-design; 18 - 01 - 2014 الساعة 00:49

ألعاب الأندرويد مجانا و حصريا (http://www.apotox.info/forum)




https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى