מרחב השמות namespace ב-PHP
ככל שמתקדמים עם תכנות PHP, נתקלים במצבים שבהם צריך וכדאי לשלב בפרויקט קוד ממקורות שונים. זה יכול להיות קוד שכתבו מתכנתים שונים שעובדים איתנו על אותו פרויקט או ספריות של קוד, שעושות בדיוק את מה שאנחנו צריכים. לצד היתרונות שמציע שילוב קוד ממקורות שונים, השימוש בהם עלול לגרום לבעיה של כפילויות בשמות הפונקציות והמחלקות, בגלל שבמקורות השונים של הקוד עשויים להופיע אותם שמות למחלקות ולפונקציות. את הבעיה הזו של כפילות השמות, מקובל לפתור באמצעות שימוש במרחב שמות (namespace).
איך פותחים מרחב שמות?
בראש הדף ששייך למרחב השמות מציינים את מרחב השמות שאליו הוא שייך באמצעות המילה השמורה namespace. לדוגמה:
<?php
namespace libxmlParser;
class parser
{
function showParsedData()
{
return "Parsed xml content";
}
}
עם כי יותר מקובל לתת שם שמחקה את מבנה התיקיות באתר. לכן, אם המחלקה יושבת בתוך התיקייה:
libraries/library1/xmlParser
מקובל לתת לה שם שישקף את מבנה התיקיות:
namespace librarieslibrary1xmlParser;
איך קוראים לקלאס שנמצא בתוך מרחב שמות?
בראש הדף, שבו יושב הקוד שצריך להשתמש בקוד מתוך מרחב השמות, מציינים את מרחב השמות שצריך לשמש את הדף באמצעות use. בהמשך, קוראים לקלאס לפי החלק האחרון של מרחב השמות:
use librarieslibrary1xmlParserParser;
$parser = new Parser();
echo $parser->showParsedData();
שמות ידידותיים
אפשר לתת שם ידידותי לקלאס שקוראים לו מתוך מרחב השמות באמצעות as:
use librarieslibrary1xmlParserParser as xmlify;
ולמחלקה נקרא לפי השם הידידותי:
$parser = new xmlify();
כיצד לקרוא לקלאס שלא נמצא בתוך מרחב שמות?
כדי לקרוא לקלאס שלא נמצא במרחב שמות, ולמעשה נמצא במרחב השמות הגלובאלי, מקדימים לשם הקלאס :
$parser = new Parser();
השימוש ב לפני שם הספרייה, שימושי גם כשרוצים להשתמש בהרחבות שבאות עם PHP דוגמת: PDO, DateTime או הקלאס הגנרי stdClass.
המדריך מבוסס על "The essentials of Object Oriented PHP" שמלמד PHP מונחה עצמים באמצעות דוגמאות ותרגילים הקליקו על התמונה כדי לרכוש את ה-eBook:
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים
יניב בתאריך: 05.07.2016
מה יעזור לי ה name space אני יכול לעשות רק require ולחסוך שתי שורות.
יוסי בן הרוש בתאריך: 05.07.2016
אם יהיו לך שתי פונקציות שונות בעלות אותו שם שבאות מספריות שונות, אז אתה בבעיה.
אנה בתאריך: 04.12.2018
כיצד לקרוא לקלאס שלא נמצא בתוך מרחב שמות?
התשובה לא ברורה, כדאי לנסח מחדש