מחלקות לעומת אובייקטים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 3 מתוך 91.
מחלקות ואובייקטים ממלאים תפקידים שונים. מחלקה היא תבנית, ואילו אובייקט הוא מה שבונים על פי התבנית הזאת.
הנה דוגמה למחלקה עם מאפיינים שהוצהרו:
<?php
class Dog {
public $name;
public $breed;
}מילת המפתח public פירושה שניתן לגשת למאפיינים האלה מחוץ למחלקה. נלמד עוד על public בשיעור על מאפיינים.
עכשיו צרו אובייקטים מהמחלקה Dog:
$dog1 = new Dog();
$dog2 = new Dog();לאובייקטים יכולים להיות ערכים נפרדים עבור המאפיינים שלהם:
$dog1->name = "Nicky";
$dog1->breed = "Siberian Husky";
$dog2->name = "Teemon";
$dog2->breed = "Shu'ali";האופרטור -> משמש לגישה למאפיינים של אובייקט.
הדפס את הנתונים של כל אובייקט:
echo $dog1->name . " is a " . $dog1->breed . "\n";
echo $dog2->name . " is a " . $dog2->breed . "\n";פלט:
Nicky is a Siberian Husky
Teemon is a Shu'aliההבדל העיקרי: המחלקה Dog מגדירה את המבנה המשותף לכל הכלבים, ואילו האובייקטים $dog1 ו-$dog2 מייצגים כלבים מסוימים, נפרדים, בעלי ערכי מאפיינים ייחודיים.
אתגר
קלהשלימו את הקוד כדי ליצור שני אובייקטים של תלמיד מהמחלקה Student ולהגדיר את המאפיינים שלהם.
student.php: מכיל את המחלקהStudent(נעול)driver.php: צרו אובייקטים והגדירו את המאפיינים שלהם
הגדירו את הערכים הבאים:
$student1: השם הוא"Alice"והציון הוא"A"$student2: השם הוא"Bob"והציון הוא"B"
נסו בעצמכם
<?php
require_once 'student.php';
// TODO: צרו שני אובייקטים של תלמידים
// TODO: הגדירו מאפיינים עבור student1 (name: "Alice", grade: "A")
// TODO: הגדירו מאפיינים עבור student2 (name: "Bob", grade: "B")
// הדפיסו את פרטי התלמידים
echo $student1->name . " has grade " . $student1->grade . "\n";
echo $student2->name . " has grade " . $student2->grade . "\n";
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים (OOP)
קבצים חיצונייםמבוא ל-OOPמחלקות לעומת אובייקטיםמילת המפתח $thisמתודותמאפייניםבנאי (__construct)הורס (__destruct)חזרה: מחשבון פשוט4ירושה
ירושה בסיסיתמילת המפתח parent::דריסת מתודותמילת המפתח finalמחלקות מופשטותסיכום – היררכיית עובדים7כימוס
ציבורי, מוגן, פרטימפרטי גישה לעומקמתודות גישה ועדכוןהסתרת מידעקידום פרמטרים בבנאי (8.0)סיכום – מערכת רישומי תלמידים2מרחבי שמות וטעינה אוטומטית
מבוא למרחבי שמותמילת המפתח useתקן הטעינה האוטומטית PSR-4הטוען האוטומטי של Composerסיכום – פרויקט מאורגן5ממשקים וחוזים
מבוא לממשקיםמימוש ממשקיםמימוש של כמה ממשקיםממשק לעומת מחלקה מופשטתרמזי טיפוסים עם ממשקיםסיכום - מחשבון צורות8מתודות קסם
מבוא למתודות קסם__toString ו־__debugInfo__get, __set, __isset, __unset__call ו־__callStatic__clone ושיבוט אובייקטים__serialize ו־__unserializeסיכום – אוסף מותאם אישית3מאפייני מחלקה
מאפייני מופע לעומת מאפיינים סטטייםקבועים במחלקותמתודות ומאפיינים סטטייםמאפיינים פרטיים ומוגניםמאפיינים לקריאה בלבד (PHP 8.1)סיכום – מנהל חשבון בנק6פולימורפיזם
בחינה מחדש של דריסת מתודותפולימורפיזם באמצעות ממשקיםרמזי טיפוסים וטיפוסי איחודקישור סטטי מאוחרסיכום — מעבד תשלומיםתרגלו בעצמכם: קומפיילר PHP אונליין