Privacy Policy Cookie Policy Terms and Conditions PHP - ויקיפדיה

PHP

מתוך ויקיפדיה, האנציקלופדיה החופשית

הלוגו של PHP
הגדל
הלוגו של PHP

PHP היא שפת תכנות המיועדת בעיקר לתכנות יישומי אינטרנט בצד השרת, אך יכולה לרוץ על המחשב האישי כשפת סקריפט. השפה מושתתת על עקרונותיהן של Perl ו-C.

תוכן עניינים

[עריכה] איפיוני השפה

לשפת PHP יש מפרש (Interpreter) המותקן בשרת האינטרנט, ותפקידו להריץ תסריטים (Scripts) ב-PHP, תוך שימוש במשאבים של מחשב השרת (למשל: מערכת הקבצים ובסיסי נתונים). באמצעות PHP ניתן ליצור דפי Web דינמיים בשילוב נתונים מבסיסי נתונים, ולטפל בטפסים ובמידע שנשלחים מהמשתמשים (clients). התפקיד של PHP הוא לנתח את המידע וליצור פלט בהתאם.

כשפה לתכנות יישומי אינטרנט בצד השרת, PHP אינה עוסקת במשימות שמתבצעות בצד הלקוח, כלומר בדפדפן. בהתאם לכך, PHP יוצרת תוכן, דף HTML ,XML, תמונה או כל אובייקט אחר, ושולחת אותם אל הדפדפן, אך היא אינה מפענחת אותם - זו מלאכתו של הדפדפן. באופן דומה, שפת PHP משלבת בדפים, במידת הצורך, תסריטי JavaScript או VBScript ורכיבי Flash, לביצוע במחשב הלקוח (קוד PHP אינו מגיע אל מחשב הלקוח, אלא רק הפלט שיצר קוד זה).

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

PHP היא אחת השפות הראשונות שנבנו במיוחד לתכנות אתרים דינמיים באינטרנט (אם לא הראשונה). גישה דומה לזו של PHP מיושמת בכלים המקבילים לה שפותחו אחריה: ASP (של Microsoft) ו-JSP (של Sun, מפתחת Java). ל-PHP מספר יתרונות:

  • השפה קלה להבנה וללמידה. במבנה השפה ניכרת השפעת שפת C, ובמידה מסוימת, גם Java. היכרות מוקדמת עם שפות אלו ללא ספק מסייעת לתהליך האקלום.
  • בשימוש ותכנות נכון, שפת PHP מספקת אבטחה גבוהה, שמתעצמת כאשר היא משולבת בשרת Apache HTTP Server ומערכת ההפעלה UNIX.
  • ניתן להריץ את מנוע PHP על מגוון רחב של מערכות הפעלה ושרתים, כך ש-PHP אינה מוגבלת לשרתים או למערכות הפעלה מסוימות.
  • שפת PHP מותאמת בעיקר לעבודה עם אתרים ברשת. למעשה, ניתן לבנות אתר שלם עם קובץ PHP אחד, בדיוק כמו אתר ויקיפדיה, שנבנה באמצעות PHP.
  • שפת PHP היא שפת "קוד פתוח" (open source), ולכן כמעט כל אחד יכול לפתח את השפה, והיא מופצת בחינם.

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

[עריכה] תולדות השפה

רזמוס לרדורף (Rasmus Lerdorf) חיפש דרך קלה להכניס נתוני קורות חיים דרך האינטרנט באמצעות מפענח שפה שירוץ בצד השרת. בשנת 1994/5 הוא יצר את מפענח השפה PHP/FI (כלומר Personal Home Page tools / Forms Interpreter) שנועד בעיקר לטיפול בטפסים. לרדורף פיתח גם את הגרסה השניה, PHP/FI 2.

השפה שלרדורף בנה הייתה קצת מסורבלת ושונה מהשפה המוכרת כיום. זאב סורסקי ואנדי גוטמנס, שני מפתחים ישראליים מהטכניון, פיתחו מהיסוד את שפת PHP המוכרת לנו כיום, והעניקו ל-PHP את הפירוש הרקורסיבי: PHP Hypertext Preprocessor. לאחר שלרדורף הסכים להפסיק את הפיתוח של PHP/FI, החליטו סורסקי וגוטמנס להוציא את השפה שפיתחו כגרסה השלישית, PHP3, כהמשך לגרסה השנייה של לרדורף ובכדי להבהיר ש-PHP3 מחליפה את PHP/FI 2. שפת PHP3 הייתה הגרסה הראשונה שהייתה מלאה, מונחית עצמים, איפשרה הרחבה לתמיכה בבסיסי נתונים ובפרוטוקולים שונים, והיא השפה המוכרת לנו. סורסקי וגוטמנס ממשיכים בפיתוח השפה בטכניון, והוציאו את PHP4, כיום משוחררת גרסה PHP5, באמצעות המנוע ZEND, שיצרו שני המפתחים.

[עריכה] 2 קודים לדוגמה

זאת דוגמה לתוכנית Hello World! טיפוסית. (ראה Basic syntax במדריך ה- PHP הרשמי):

<?php
  echo "Hello World!";
?>



דוגמה מתקדמת מעט יותר, המיועדת לפענוח טפסים:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <?php
      
if ($_POST["posted"] == 1)
      {
        
$username = $_POST["username"];
        
$password = $_POST["password"];
        if (
$password == "")
        {
          die(
"שדה הסיסמה ריק");
        }
        if (
$username == "")
        {
          die(
"שם המשתמש ריק");
        }
      }
    
?>
    <title>PHP Example</title>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
    <meta http-equiv="Content-Language" content="en" />
  </head>
  <body>
    <form method="post" action="index.php">
      <input type="hidden" name="posted" value="1" />
      <div>שם משתמש: <input type="text" name="username" /></div>
      <div>סיסמה: <input type="password" name="password" /></div>
      <div><input type="submit" name="submit" value="שליחה" /></div>
    </form>
  </body>
</html>

[עריכה] טריוויה

בשפת PHP קיימת הודעת שגיאה המכונה unexpected T_PAAMAYIM NEKUDOTAYIM. הודעה שגרמה לבלבול גדול בקרב מפתחים שאינם דוברי עברית.

[עריכה] ראו גם

[עריכה] קישורים חיצוניים

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu