Menu
Coddy logo textTech

קידום פרמטרים בבנאי (8.0)

חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 42 מתוך 91.

PHP 8.0 הציגה קידום מאפיינים בבנאי, תכונה שמפחיתה באופן משמעותי את קוד התבניתי בעת הגדרת מחלקות. במקום להצהיר על מאפיינים בנפרד ואז להש assign אותם בבנאי, אפשר לעשות את שניהם בצעד אחד.

זו הגישה המסורתית שבה השתמשת עד עכשיו:

<?php
class Product {
    private string $name;
    private float $price;
    
    public function __construct(string $name, float $price) {
        $this->name = $name;
        $this->price = $price;
    }
    
    public function getInfo(): string {
        return $this->name . ": $" . $this->price;
    }
}

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

<?php
class Product {
    public function __construct(
        private string $name,
        private float $price
    ) {}
    
    public function getInfo(): string {
        return $this->name . ": $" . $this->price;
    }
}

$product = new Product("Laptop", 999.99);
echo $product->getInfo();

פלט:

Laptop: $999.99

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

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

challenge icon

אתגר

קל

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

תארגן את הקוד בשני קבצים:

  • Contact.php: צור מחלקת Contact באמצעות קידום מאפיינים בבנאי, כדי להגדיר את כל המאפיינים ישירות בחתימת הבנאי. לאיש הקשר שלך יהיו:
    • מאפיין פרטי $name (מחרוזת)
    • מאפיין פרטי $email (מחרוזת)
    • מאפיין פרטי $phone (מחרוזת) עם ערך ברירת מחדל של "Not provided"
    השתמש בתחביר של קידום מאפיינים בבנאי: אין צורך בהצהרות נפרדות של מאפיינים! הוסף מתודה ציבורית getFullDetails() שמחזירה "[name] | [email] | [phone]". הוסף גם מתודה getSummary() שמחזירה "Contact: [name]".
  • main.php: כלול את קובץ Contact. יתקבלו שלוש קלטים: שם, כתובת דוא"ל ומספר טלפון. צור שני מופעים של Contact:
    • איש הקשר הראשון צריך להשתמש בכל שלושת הערכים (שם, כתובת דוא"ל ומספר טלפון)
    • איש הקשר השני צריך להשתמש רק בשם ובכתובת הדוא"ל (ולהסתמך על ערך ברירת המחדל של מספר הטלפון)
    הדפס ארבע שורות:
    • הפרטים המלאים של איש הקשר הראשון
    • הסיכום של איש הקשר הראשון
    • הפרטים המלאים של איש הקשר השני
    • הסיכום של איש הקשר השני

שים לב כיצד קידום מאפיינים בבנאי מאפשר לך להגדיר מאפיינים, לקבוע את מידת הנראות שלהם, להצהיר על הטיפוסים שלהם ולהקצות להם ערכים — הכול בחתימת בנאי אחת, קריאה וברורה. הפרמטר האופציונלי phone עם ערך ברירת מחדל מדגים שפרמטרים שמקודמים בבנאי פועלים בצורה חלקה עם ערכי ברירת מחדל, בדיוק כמו פרמטרים רגילים.

נסו בעצמכם

<?php

require_once 'Contact.php';

// קרא את הקלט
$name = trim(fgets(STDIN));
$email = trim(fgets(STDIN));
$phone = trim(fgets(STDIN));

// TODO: צור את איש הקשר הראשון עם כל שלושת הערכים (name, email, phone)

// TODO: צור את איש הקשר השני עם name ו-email בלבד (השתמש בערך ברירת המחדל עבור phone)

// TODO: הדפס את הפרטים המלאים של איש הקשר הראשון

// TODO: הדפס את התקציר של איש הקשר הראשון

// TODO: הדפס את הפרטים המלאים של איש הקשר השני

// TODO: הדפס את התקציר של איש הקשר השני

?>
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר PHP אונליין