Menu
Coddy logo textTech

מילת המפתח 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 (אם יש כזו) ולפני כל קוד אחר. היא הופכת את הקוד שלך לנקי יותר וקל יותר לקריאה, בכך שהיא מבטלת נתיבי מרחב שמות שחוזרים על עצמם.

challenge icon

אתגר

קל

בוא נארגן יישום להעברת הודעות באמצעות מילת המפתח 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() על כל אובייקט (כל תוצאה בשורה נפרדת)

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

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

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

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