נגישות       נגישות
שינוי גודל טקסט:
א א א
שינוי צבעי האתר:
? מקשי קיצור:

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

הפעלת מקשי הקיצור תלויה בדפדפן שבו אתם משתמשים.

Internet Explorer, Chrome ובגרסאות ישנות של Firefox: לחצו על מקש Alt ועל מקש המספר או האות על-פי הרשימה. ב Firefox 3 ומעלה: לחצו על המקשים Alt + Shift + המספר או האות.

S - עבור לתוכן הדף
L - חיפוש
1- עמוד הבית
2 - פרוייקטים
3 - מדריכים
4 - אודות
5 - צרו קשר
6 - הצהרת נגישות
 

מרחב השמות 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 מונחה עצמים

 

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

 

= 9 + 8

תמונת המגיב

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

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

תמונת המגיב

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

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