PHP5 هي لغة تحتوي على معظم ميزات اللغات الموجهة للكائنات، ولديها العديد من الميزات الموجهة للكائنات أكثر من PHP4، ولكن بعض المفاهيم مربكة بعض الشيء، لذلك سأتحدث عنها اليوم أرجو أن تسامحوني أيها الخبراء (لقراءة هذه المقالة، تحتاج إلى فهم المعرفة الشيئية لـ PHP5)
أولاً، دعونا نفهم الكلمات الرئيسية الثلاث المذكورة أعلاه: هذا، الذات، الوالد، وهو أمر يسهل فهمه حرفيًا. إلى هذا، يا أبي، هاها، إنه أكثر متعة، دعنا نحدد أولاً بعض المفاهيم أين يتم استخدام هذه الكلمات الرئيسية الثلاثة؟ it)، والذات هي مؤشر للكائن الحالي، وهو مؤشر للفئة، والأصل هو مؤشر للفئة الأصلية. كثيرًا ما نستخدم المؤشرات هنا لأنه لا توجد لغة أفضل للتعبير عنها. هاها، لم أتعلم اللغة الصينية جيدًا. -_-#
إذا لم تفهم الأمر جيدًا بهذه الطريقة، فلنتحدث عنه بناءً على أمثلة فعلية.
(1) هذا
1 <?php
2
3 فئة اسم المستخدم
4 {
5 //تحديد السمات
6 اسم $ خاص؛
7
8 //تعريف المنشئ
9 وظيفة __بناء(اسم $)
10 {
11 $this->name = $name; // تم استخدام هذا المؤشر هنا
12}
13
14 //المدمر
15 وظيفة __تدمير(){}
16
17 //طباعة وظيفة عضو اسم المستخدم
18 وظيفة اسم الطباعة ()
19 {
20 print($this->name); // يتم استخدام هذا المؤشر مرة أخرى
واحد وعشرون }
إثنان وعشرون }
ثلاثة وعشرين
24 //إنشاء كائن
25 $nameObject = new UserName( "heiyeluren" );
26
27 //تنفيذ الطباعة
28 $nameObject->printName(); //الإخراج: heiyeluren
29
30 //الإنشاء الثاني للكائن
31 $nameObject2 = new UserName( "PHP5" );
32
33 //تنفيذ الطباعة
34 $nameObject2->printName(); //الإخراج: PHP5
35؟>
لنرى أن الفئة أعلاه تستخدم هذا المؤشر على السطرين 11 و 20 على التوالي، فمن يشير هذا في ذلك الوقت؟ في الواقع، هذا يحدد من يشير إليه عند إنشاء مثيل له، على سبيل المثال، عندما يتم إنشاء مثيل للكائن لأول مرة (السطر 25)، فهذا يشير إلى كائن $nameObject، ثم عند الطباعة على السطر 18، قم بطباعة ( $this -><name) يصبح print($nameObject->name)، ثم يتم إخراج "heiyeluren" بالطبع. في الحالة الثانية، تصبح print( $this->name ) print( $nameObject2->name )، لذلك يتم إخراج "PHP5". ولذلك، يعد هذا مؤشرًا لمثيل الكائن الحالي ولا يشير إلى أي كائن أو فئة أخرى.
(2) الذات
أولاً، يجب أن نوضح أن الذات تشير إلى الفصل نفسه، أي أن الذات لا تشير إلى أي كائن تم إنشاء مثيل له. بشكل عام، يتم استخدام الذات للإشارة إلى المتغيرات الثابتة في الفصل.
1<?فب
2
عداد 3 فئات
4 {
5 // تحديد الخصائص، بما في ذلك متغير ثابت
6 خاص ثابت $firstCount = 0;
7 خاص $lastCount؛
8
9 //منشئ
10 وظيفة __بناء ()
11 {
12 $this->lastCount = ++selft::$firstCount; // استخدم self لاستدعاء المتغيرات الثابتة.
13}
14
15 //اطبع أحدث قيمة
16 وظيفة برينتلاستكونت ()
17 {
18 طباعة($this->lastCount);
19}
20}
واحد وعشرون
22 //إنشاء كائن
23 $countObject = new Counter();
أربعة وعشرون
25 $countObject->printLastCount(); //الإخراج 1
26
27؟>
نحتاج فقط إلى الانتباه إلى مكانين هنا، السطر 6 والسطر 12. قمنا بتعريف متغير ثابت $firstCount في السطر الثاني، والقيمة الأولية هي 0. ثم قمنا بتسمية هذه القيمة في السطر 12، باستخدام self لنسميها، وباستخدام "::" للاتصال في المنتصف، وهو ما قمنا به استدعاء مشغل المجال، فإن ما نسميه في هذا الوقت هو المتغير الثابت $frestCount المحدد بواسطة الفئة نفسها، ولا علاقة للمتغير الثابت الخاص بنا بمثيل الكائن التالي، فهو مرتبط فقط بالفئة، ثم إذا اتصلت به الفئة نفسها، فلا يمكننا استخدام هذا للإشارة، يمكنك استخدام الذات للإشارة، لأن الذات تشير إلى الفئة نفسها وليس لها علاقة بأي مثيل كائن. بمعنى آخر، إذا كان هناك أعضاء ثابتون في صفنا، فيجب علينا أيضًا استخدام الذات للاتصال بهم.
(3) الأصل
نحن نعلم أن الأصل هو مؤشر للفئة الأصل، بشكل عام، نستخدم الأصل لاستدعاء مُنشئ الفصل الأصلي.
1<?فب
2
3 //الفئة الأساسية
4 فئات الحيوان
5 {
6 // سمات الفئة الأساسية
7 اسم $ العام؛ //اسم
8
9 //منشئ الطبقة الأساسية
10 وظيفة عامة __construct( $name )
11 {
12 $this->name = $name;
13}
14}
15
16 // فئة مشتقة
17 فئة الشخص تمتد إلى الحيوان // فئة الشخص ترث فئة الحيوان
18 {
19 عام $personSex;//جنس
20 public $personAge;
واحد وعشرون
22 //منشئ الطبقة الموروثة
23 وظيفة __construct( $personSex, $personAge )
أربعة وعشرون {
25parent::__construct( "heiyeluren" ); // استخدم الأصل لاستدعاء مُنشئ الفئة الأصلية
26 $this->personSex = $personSex;
27 $this->personAge = $personAge;
28 }
29
30 وظيفة برينت بيرسون ()
31 {
32 print( $this->name. " هو " .$this->personSex. ",هذا العام " .$this->personAge );
33}
34}
35
36 //إنشاء كائن شخصي
37 $personObject = new Person( "male", "21");
38
39 //تنفيذ الطباعة
40 $personObject->printPerson(); // الإخراج: heiyeluren ذكر، هذا العام 21
41
42؟>
ننتبه إلى التفاصيل التالية: سمات الأعضاء كلها عامة، وخاصة تلك الخاصة بالفئة الأصلية، بحيث يمكن للفئات الموروثة الوصول إليها من خلال ذلك. انتبه إلى النقطة الأساسية، السطر 25:parent::__construct( "heiyeluren" ). في هذا الوقت، نستخدم الأصل لاستدعاء مُنشئ الفئة الأصلية لتهيئة الفئة الأصلية، لأن أعضاء الفئة الأصلية هم الكل عام حتى نتمكن من استخدام هذا مباشرة لاستدعاء الفصل الموروث.
ملخص:
هذا مؤشر لمثيل كائن، وself هو مرجع للفئة نفسها، وparent هو مرجع للفئة الأصلية.
في الأساس، هذا كل ما أعرفه. لا بد أن يكون هناك بعض سوء الفهم. يرجى الإشارة إليهم.
بريدي الإلكتروني: [email protected]
وقت الكتابة: 2004-11-3 18:30
http://dev.csdn.net/author/heiyeshuwu/702e33d6abaf4be58c06f1b55cf0fc8c.html