וובמאסטר - תיכנות ובניית אתרים

מדריך PHP: include, require ו-goto

רן בר-זיק ,‏ אינטרנט ישראל‏ ‏/‏ 25 פברואר, 2011
F+
F-

include

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

לשם הדוגמא נניח שיש לי שני קבצים, שמו בישראל של אחד מהם הוא otherpage.php ובו יש פונקציה חשובה מאד:

WebMatrix example of other PHP file

הפונקציה היא:

<?php 
function otherFileFunction() {
    return 'Hello, I am from otherfile.php!';
}

נניח שמדובר בפונקציה חשובה מאין כמותה, שאני רוצה להפעיל אותה בדף אחר בשם PHPPage.php, כיצד אוכל לעשות זאת? נכון, תמיד אפשר לעשות copy&paste, אבל אני רוצה לפתור את זה באופן יותר אלגנטי. פקודת include תסייע לי, היא מקבל ארגומנט אחד – שם הקובץ שאותו אני רוצה לכלול, למשל:

Include('otherfile.php');

ברגע שעשיתי את זה, אני יכול להשתמש בפונקציות שיש ב-otherfile.php! למשל:

<?php 
    Include('otherfile.php');
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <?php print otherFileFunction();?>
    </body>
</html>

וזה גם יעבוד!

אני יכול גם להשתמש בתיקיות – רק עלי לזכור להשתמש בשם התיקיה ביחס לקובץ שבו אני משתמש. אם אני אעביר את otherfile.php לתיקיה בשם my_folder:

othefile.php is in my_folder

אני יכול להכניס את התיקיה ל-include באופן הבא:

<?php 
    Include('my_folder/otherfile.php');
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <?php print otherFileFunction();?>
    </body>
</html>

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

על מנת למנוע שגיאות שנובעות מהכנסה בטעות של אותו קובץ פעמיים (ואז, כיון שלא ניתן להגדיר שם של פונקציה פעמיים, תהיה לנו הודעת שגיאה ודאית) מומלץ מאד להשתמש ב include_once, הוא זהה כמעט לחלוטין ל-include אבל מונע שגיאות. הנה דוגמא לשימוש בו:

<?php 
    include_once('my_folder/otherfile.php');
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <?php print otherFileFunction();?>
    </body>
</html>

require

אם הקובץ שאנו מנסים לעשות לו include לא נמצא, דבר רע לא יקרה, פשוט הפונקציה לא תהיה זמינה ובמקרה שלנו לא תודפס. אבל אם לצורך העניין הקובץ שאנו רוצים לעשות לו include הוא חיוני, אנו נשתמש ב-require. Require זהה כמעט לחלוטין ל-include רק שאם הקובץ לא קיים – תהיה לנו שגיאת הרצה (במקרה של ההרצה ב-Webmatrix נקבל שגיאה 500). גם במקרה הזה מקובל להשתמש ב-require_once:

<?php 
    require_once('my_folder/otherfile.php');
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <?php print otherFileFunction();?>
    </body>
</html>

Goto

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

אבל, לשם הסיכוי הקטן שתתקלו בזה, נעבור על זה.

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

<?php 

print 'hello ';

print 'world!';

פה למשל אני יודע בוודאות שקודם יודפס ה-hello ורק אחרי כן ה-world.

Goto נותנת לי אפשרות לדלג קדימה בקוד, כך למשל:

<?php 
goto a;

print 'hello ';

a:
print 'world!';

מה שיודפס הוא world ואילו ה-hello המסכן יופקר לגורלו ולא ירוץ.

רק תזכרו שמדובר במנהג מאד מאד רע, ושנו רבותינו מ-xkcd:

מקור: HTTP://IMGS.XKCD.COM/COMICS/GOTO.PNG מופץ תחת רשיון CREATIVE COMMONS

מקור: HTTP://IMGS.XKCD.COM/COMICS/GOTO.PNG מופץ תחת רשיון CREATIVE COMMONS

רן בר-זיק, אינטרנט ישראל

מתכנת PHP מנוסה ובעל ידע רב בפיתוח לאינטרנט על בסיס LAMP. מומחה במערכות דרופל, ג'ומלה ו-וורדפרס. שולט היטב בכל מה שקשור לפרונט אנד: JavaScript: jQuery ו-MooTools,ActionScript 2/3 וכמובן HTML 5 + CSS 3.

אינטרנט ישראל: www.internet-israel.com
תגיות: PHP‏  /  מדריך‏  

תגובות בפייסבוק

תגובות למאמר



עוד במדריך

תגיות פופולאריות

X
הצטרף לעמוד שלנו בפייסבוק להישאר מעודכן!
וובמאסטר © כל הזכויות שמורות