תכנות מונחה עצמים (OOP) היא פרדיגמת תכנות המייצגת ומתמרנת נתונים והתנהגות באמצעות אובייקטים, שהם מופעים של מחלקות. PHP מספקת תמיכת OOP באמצעות אוסף של פונקציות ומבנים מובנים.
מחלקה ב-PHP היא תוכנית לבניית אובייקטים. מחלקה מגדירה את של אובייקט נכסים (הידוע גם כמשתני חבר או תכונות) ושיטות (הידוע גם כפונקציות או התנהגויות איברים). המונחים "var" ו-"function" משמשים בתוך המחלקה כדי לציין מאפיינים ושיטות, בהתאמה. הנה דוגמה למחלקה בסיסית של PHP:
class Person {
var $name;
var $age;
function setName($name) {
$this->name = $name;
}
function getName() {
return $this->name;
}
function setAge($age) {
$this->age = $age;
}
function getAge() {
return $this->age;
}
}
המחלקה "Person" בדוגמה זו מכילה שני מאפיינים: $name ו-$age. ישנן גם ארבע שיטות: setName(), getName(), setAge() ו-getAge(). שיטות אלה משמשות סט ולאחזר ערכי נכס. יש לציין שהמונח "זה" מתייחס לאובייקט הנוכחי בתוך המחלקה.
כדי ליצור אובייקט מחלקה, אנו משתמשים במילת המפתח "חדשה" ואחריה שם המחלקה. הנה דוגמה:
$person = new Person();
ברגע שיש לנו אובייקט, נוכל להשתמש בשיטות של המחלקה כדי להגדיר ולקבל את הערכים של המאפיינים:
$person->setName("John Doe");
$person->setAge(30);
echo $person->getName(); // prints "John Doe"
echo $person->getAge(); // prints "30"
ירושה הוא מושג בסיסי בתכנות מונחה עצמים המאפשר למחלקה אחת לרשת תכונות ופונקציות מאחרות. תת-מחלקה או מחלקה נגזרת היא כזו שיורשת ממחלקה אחרת, ואילו המחלקה ממנה היא יורשת ידועה כ- superclass או מחלקה בסיס.
הנה דוגמה של תת-מחלקה "סטודנט" שמקורה במעמד העל "אדם":
class Student extends Person {
var $studentId;
function setStudentId($id) {
$this->studentId = $id;
}
function getStudentId() {
return $this->studentId;
}
}
בדוגמה זו, המחלקה Student יורשת את כל המאפיינים והשיטות של המחלקה Person ומוסיפה לו מאפיין חדש $studentId ו- methods setStudentId(), ו-getStudentId().
$student = new Student();
$student->setName("Jane Doe");
$student->setAge(20);
$student->setStudentId("123456");
echo $student->getName(); // prints "Jane Doe"
echo $student->getAge(); // prints "20"
echo $student->getStudentId(); // prints "123456"
ממשקים הם סוג של חוזה המציין קבוצה של שיטות שעל מחלקה ליישם. מילת המפתח ממשק משמשת להגדרת an ממשק, והוא יכול לכלול רק חתימות שיטה, לא גופי שיטה.
להלן דוגמה לממשק "צורה" המגדיר קבוצה של שיטות לצורות:
interface Shape {
public function getArea();
public function getPerimeter();
}
מחלקה המיישמת ממשק חייבת להגדיר את השיטות שצוינו בממשק. הנה דוגמה למחלקה "מלבן" המיישמת את ממשק הצורה:
class Rectangle implements Shape {
private $width;
private $height;
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function getArea() {
return $this->width * $this->height;
}
public function getPerimeter() {
return 2 * ($this->width + $this->height);
}
}
בדוגמה זו, המחלקה Rectangle מיישמת את הפונקציות getArea() ו-getPerimeter() של ממשק Shape. כעת נוכל לבנות אובייקט מלבן ולהשתמש בו שיטות:
$rectangle = new Rectangle(5, 10);
echo $rectangle->getArea(); // prints "50"
echo $rectangle->getPerimeter(); // prints "30"
חוגים, אובייקטים, ירושה, וממשקים הם הרעיונות הבסיסיים של OOP ב-PHP. ישנם עקרונות מתוחכמים רבים נוספים שניתן ליישם ב-PHP כדי להפוך את התוכנה ליותר מודולרית, ניתנת לניהול ושימוש חוזר, כגון מחלקות מופשטות, פולימורפיזם, אנקפסולציה וכו'.
חשוב לזכור ש-OP היא רק פרדיגמה אחת ב-PHP; ישנן שיטות רבות אחרות לבניית קוד PHP; עם זאת, נעשה שימוש נרחב ב-OPP ונחשב לתרגול מומלץ בפיתוח PHP הנוכחי.
שאלות ותשובות
ש: מהו תכנות מונחה עצמים (OOP)?
ת: OOP היא פרדיגמת תכנות המייצגת ומתמרנת נתונים והתנהגות באמצעות אובייקטים, שהם מופעים של מחלקות.
ש: האם PHP תומך ב-OOP?
ת: כן, PHP היא שפת סקריפטים פופולרית בצד השרת הכוללת פונקציות ותכונות מובנות להפעלת OOP.
ש: איך אני יוצר אובייקט ב-PHP?
ת: כדי ליצור אובייקט של מחלקה, אנו משתמשים במילת המפתח "חדשה", ואחריה שם המחלקה. לדוגמה: $person = new Person();
ש: מהי ירושה ב-OOP?
ת: ירושה היא היבט בסיסי של OOP המאפשר למחלקה לרשת מאפיינים ושיטות ממחלקה אחרת.
ש: אתה יכול להסביר מהם ממשקים?
ת: ממשקים הם דרך להגדיר חוזה למחלקה, תוך ציון קבוצה של שיטות שעל המחלקה ליישם.
ש: האם יש מושגים מתקדמים אחרים של OOP ב-PHP?
ת: כן, ישנם עקרונות מתוחכמים רבים נוספים שניתן ליישם ב-PHP כדי להפוך את התוכנית ליותר מודולרית, ניתנת לניהול וניתנת לשימוש חוזר, כגון מחלקות מופשטות, פולימורפיזם, אנקפסולציה וכן הלאה.
תרגילים:
- מהו התחביר ליצירת מחלקה ב-PHP?
- איך אתה יכול להגדיר שיטת קונסטרוקטור במחלקת PHP?
- מה ההבדל בין שיטה סטטית לשיטה לא סטטית במחלקת PHP?
- כיצד ניתן ליצור אובייקט ממחלקה ב-PHP?
- מהי המטרה של מילת המפתח "מרחיב" בשיעור PHP?
תשובות:
- התחביר ליצירת מחלקה ב-PHP הוא "שם מחלקה {}"
- ניתן להגדיר את שיטת הקונסטרוקטור במחלקת PHP באמצעות הפונקציה __construct() .
- ניתן לקרוא למתודה סטטית מבלי ליצור אובייקט של המחלקה, בעוד למתודה לא סטטית צריך ליצור אובייקט ואז ניתן לקרוא לה.
- ניתן ליצור אובייקט ממחלקה ב-PHP על ידי שימוש במילת המפתח "חדשה", ואחריה שם המחלקה, והקצאתו למשתנה. למשל $object = new ClassName;
- מילת המפתח "extends" במחלקת PHP משמשת כדי לציין שמחלקה עוברת בירושה ממחלקת אב. זה מאפשר למחלקה לרשת מאפיינים ושיטות ממחלקה אחרת.