מילת המפתח use
חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 11 מתוך 91.
כתיבת הנתיב המלא של מרחב השמות בכל פעם שמשתמשים במחלקה עלולה להיות מייגעת. מילת המפתח use מאפשרת לייבא מחלקה בראש הקובץ, כך שאפשר להתייחס אליה בשם הקצר שלה.
במקום לכתוב שוב ושוב \Blog\User, אפשר לייבא אותו פעם אחת:
<?php
use Blog\User;
$user = new User("Alice");
echo $user->name;
כשצריך מחלקות ממרחבי שמות שונים עם אותו שם, אפשר ליצור כינוי באמצעות מילת המפתח as:
<?php
use Blog\User as BlogUser;
use Shop\User as ShopUser;
$blogger = new BlogUser("Alice");
$customer = new ShopUser("alice@example.com");
echo $blogger->name . "\n";
echo $customer->email . "\n";
פלט:
Alice
alice@example.com
אפשר גם לייבא כמה מחלקות מאותו מרחב שמות באמצעות ייבוא מקובץ:
<?php
use Blog\{User, Post, Comment};
$user = new User("Alice");
$post = new Post("Hello World");
נקודה מרכזית: פקודת use חייבת להופיע אחרי הצהרת namespace (אם יש כזו) ולפני כל קוד אחר. היא הופכת את הקוד שלך לנקי יותר וקל יותר לקריאה, בכך שהיא מבטלת נתיבי מרחב שמות שחוזרים על עצמם.
אתגר
קלבוא נארגן יישום להעברת הודעות באמצעות מילת המפתח use כדי לייבא מחלקות בצורה מסודרת ולהימנע מכתיבת נתיבי מרחב שמות מלאים בכל מקום.
תיצור שלושה קבצים שפועלים יחד:
Messaging/Email.php: הגדר מחלקתEmailבמרחב השמותMessaging. צריכה להיות לה תכונהpublic $address, בנאי שמקבל את הכתובת ומגדיר אותה, ומתודהsend()שמחזירה"Sending email to [address]".Messaging/SMS.php: הגדר מחלקתSMSבמרחב השמותMessaging. צריכה להיות לה תכונהpublic $phone, בנאי שמקבל את מספר הטלפון ומגדיר אותו, ומתודהsend()שמחזירה"Sending SMS to [phone]".main.php: כלול את שני קובצי המחלקות, ואז השתמש במילת המפתחuseכדי לייבא את שתי המחלקות. צור אובייקטEmailעם הכתובת"alice@example.com"ואובייקטSMSעם מספר הטלפון"555-1234". הדפס את התוצאה של קריאה למתודהsend()בכל אחד מהאובייקטים (כל אחד בשורה נפרדת).
ב-main.php, במקום לכתוב new \Messaging\Email(...), תייבא את המחלקות בראש הקובץ באמצעות הצהרות use, כדי שתוכל פשוט לכתוב new Email(...) ו-new SMS(...).
נסו בעצמכם
<?php
// כלול את קובצי המחלקות
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';
// TODO: השתמש במילת המפתח 'use' כדי לייבא את שתי המחלקות ממרחב השמות Messaging
// כך אפשר לכתוב 'new Email(...)' במקום 'new \Messaging\Email(...)'
// TODO: צור אובייקט Email עם הכתובת "alice@example.com"
// TODO: צור אובייקט SMS עם מספר הטלפון "555-1234"
// TODO: הדפס את התוצאה של הקריאה ל־send() על כל אובייקט (כל תוצאה בשורה נפרדת)
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
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 אונליין