תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

מרחב השמות namespace ב-PHP

מחבר:
בתאריך:

 

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

 

eBook cover The essentials of Object Oriented PHP

 

איך פותחים מרחב שמות?

בראש הדף ששייך למרחב השמות מציינים את מרחב השמות שאליו הוא שייך באמצעות המילה השמורה 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:

eBook cover The essentials of Object Oriented PHP

 

לכל מדריכי ה-PHP מונחה עצמים

 

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

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

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

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

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

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

מתי הוקמה המדינה?

 

תמונת המגיב

יניב בתאריך: 05.07.2016

מה יעזור לי ה name space אני יכול לעשות רק require ולחסוך שתי שורות.

תמונת המגיב

יוסי בן הרוש בתאריך: 05.07.2016

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

תמונת המגיב

אנה בתאריך: 04.12.2018

כיצד לקרוא לקלאס שלא נמצא בתוך מרחב שמות?
התשובה לא ברורה, כדאי לנסח מחדש