מהו שיעור מופשט ב-PHP?

SSL מהימן החל מ-$3.44 בלבד
פרסומות
קבועים ב-PHP OOP
ממשק php לעומת מחלקה אבסטרקטית

במאמר מקיף זה, ניכנס עמוק לתחום השיעורים המופשטים של PHP. מאמר זה יציע לכם סקירה מלאה כיצד להשתמש במחלקות מופשטות בפרויקטי פיתוח PHP שלכם, מהבנת העקרונות ועד לבחינת התחביר והיישום. מאמר זה יספק לך את הידע והיכולות לעבוד בהצלחה עם שיעורים מופשטים בקוד שלך, בין אם אתה חדש או מפתח מנוסה.

מחלקה מופשטת מכילה את הצהרת השיטות אך לא את ההגדרה שלהן. זה מכיל רק את השמות שלהם. באחריות כיתת הילד להגדיר שיטות אלו.

מהי שיטה מופשטת?

שיטה מופשטת היא שיטה של ​​מחלקה מופשטת המוצהרת באמצעות מילות מפתח מופשטות ואינה מכילה את הגוף. זה מוגדר על ידי הכיתה של הילד.

  • תַקצִיר מילת מפתח משמשת להכרזה על מחלקה או שיטה מופשטת.
  • מחלקה מופשטת חייבת להכיל לפחות שיטה מופשטת אחת. עם זאת, זה יכול להכיל גם שיטות לא מופשטות.

תחביר

<?php
abstract class ParentClass {
  abstract public function someMethod1();
  abstract public function someMethod2($name, $color);
  abstract public function someMethod3() : string;
}
?>

מהם הכללים של מחלקה אבסטרקטית ב-PHP?

  • מחלקה מופשטת חייבת להכיל לפחות שיטה מופשטת אחת. עם זאת, זה יכול להכיל גם שיטות לא מופשטות.
  • כאשר ילד שנקרא יורש את מחלקת האב המופשטת, הוא חייב להגדיר את השיטות המופשטות של מחלקת האב עם אותו שם.
  • בזמן הגדרת שיטות האסקט במחלקת הילד, יש להגדיר אותה עם משנה גישה מוגבלת פחות. לדוגמה, אם מחלקת האב מכילה את השיטה המופשטת שיש מוּגָן משנה גישה. לכן, כאשר כיתת הילד מגדירה שיטה זו, היא צריכה להשאיר את משנה הגישה שלה בתור אחת מהן מוּגָן or ציבורי. זה לא יכול להגדיר את זה פְּרָטִי, כי הוא מוגבל יותר מהמוגן.
  • מחלקת הילד המגדירה את השיטה המופשטת חייבת לעבור את המספר השווה של ארגומנטים כפי שצוין בהצהרה במחלקה האבקטית. עם זאת, לכיתה הילדית יכולים להיות ארגומנטים אופציונליים/נוספים מלבד אלו הנדרשים.

דוגמה למחלקה אבסטרקטית ב-PHP

הסבר על הדוגמה לעיל

<!-- wp:code -->
<pre class="wp-block-code"><code><?php
// Parent abstract class
abstract class Bike {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract public function introduction() : string;
}

// Child classes defining the parent classes
class Honda extends Bike {
  public function intro() : string {
    return "I am $this->name!";
  }
}

class Suzuki extends Bike {
  public function introduction() : string {
    return "I am $this->name!";
  }
}

// Objects from child classes
$honda = new honda("Honda");
echo $honda->introduction();

$suzuki= new suzuki("Suzuki");
echo $suzuki->introduction();

?></code></pre>
<!-- /wp:code -->
  • בדוגמה שלמעלה, אנו יוצרים מחלקה מופשטת אופניים שמכיל שיטה מופשטת מבוא.
  • אנו יוצרים שתי כיתות ילדים הונדה ו סוזוקי שמרחיב את המחלקה המופשטת ומגדיר את שיטת ההקדמה.
  • אנו יוצרים את האובייקטים של מחלקות אלה וקוראים לשיטת ההקדמה באמצעות האובייקטים שלהם. שיטת ההקדמה פועלת בהתאם למימוש שניתן על ידי המחלקה המתאימה לה.

דוגמה למחלקה מופשטת עם ארגומנטים נוספים בעקיפה של מתודה

<?php
// Parent abstract class
abstract class Bike {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract protected function introduction($model) : string;
}

// Child classes defining the parent classes
class Honda extends Bike {
  public function intro($model) : string {
    return "I am $this->name. My model is $model";
  }
}

class Suzuki extends Bike {
  public function introduction($model, $color=null) : string {
    return "I am $this->name. My model is $model and color is $color";
  }
}

// Objects from child classes
$honda = new honda("Honda");
echo $honda->introduction();

$suzuki= new suzuki("Suzuki");
echo $suzuki->introduction();
?>

הסבר על הדוגמה לעיל

SSL מהימן החל מ-$3.44 בלבד
פרסומות
  • ההיגיון הבסיסי של הדוגמה לעיל הוא כמו הדוגמה הקודמת. עם זאת, אנו מעבירים ארגומנט נוסף לפונקציה בשיטת ההקדמה של סוזוקי מעמד.
  • כפי שהגדרנו את הכלל מוקדם יותר במדריך זה, משנה הגישה של מחלקת הילד בזמן יישום השיטה המופשטת של מחלקת האב חייב להיות קטן ממה שצוין במחלקת האב להצהרה על שיטה זו. לכן, שתי כיתות הילד משתמשות במשנה גישה ציבורית כדי להגדיר את שיטת ההקדמה.
  • נסה להגדיר את הפונקציה עם משנה גישה פרטית, זה ייצור שגיאה.

הערה: המחלקה המופשטת אינה מכילה שום שיטת בנאי. לכן, איננו יכולים ליצור מופע של מחלקה מופשטת.

הפשטת כיתה PHP 8 תיעוד רשמי.

קבועים ב-PHP OOP
ממשק php לעומת מחלקה אבסטרקטית
close

הישאר מעודכן לגבי PHP!

אנחנו לא שולחים ספאם!

SSL מהימן החל מ-$3.44 בלבד
פרסומות

en English
X
גלול למעלה