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 הייתה הגרסה הראשונה שהייתה מלאה, איפשרה הרחבה לתמיכה בבסיסי נתונים ובפרוטוקולים שונים, והיא השפה המוכרת כיום. סורסקי וגוטמנס ממשיכים בפיתוח השפה בעזרת חברת Zend Technologies שהקימו יחדיו, הוציאו את PHP4 ולאחריה את PHP5, וב-2015 הוכרזה PHP7. המספר 6 דולג בסימון הגרסאות, לאחר 13 שנים של עבודה על הגרסה הוחלט לדלג מספר.

דוגמאות קוד

זאת דוגמה לתוכנית Hello World טיפוסית:
<?php
 echo "Hello World";?>
<?php
 print "Hello World";?>
(שתי הפעולות הנ"ל יעשו את אותה עבודה, אך נהוג להשתמש בדוגמה הראשונה)
הקוד שלהלן ידגים כיצד ניתן להדפיס את כתובת ה-IP של המחשב שצפה בקוד זה.
<?php
 echo $_SERVER["REMOTE_ADDR"];?>
שפת PHP תומכת בקבלת משתנים מהכתובת (טפסים בשיטת GET) הקוד הבא מדגים שימוש באפשרות זאת.
<?phpecho "Your name is: {$_GET['name']}";?>
אם מידע מהטופס נשלח באמצעות HTTP POST, נוכל לגשת למידע באמצעות המשתנה הגלובלי POST.
במידה ונכנס לכתובת http://localhost/file.php?name=Bob (כאשר localhost/file.php מייצג את מיקום ושם הקובץ) נקבל את הפלט:
Your name is: Bob
הקוד הבא מדגים התחברות למסד נתונים מסוג MySQL וביצוע שאילתא.
<?phpmysql_connect("HostName", "UserName", "Password") //התחברות למסד הנתונים
 or die(mysql_error()); //אם ההתחברות נכשלה, הפסק את ריצת הקודmysql_select_db("DataBaseName") //בחירת מסד נתונים
 or die(mysql_error()); //אם בחירת המסד נכשלה (מסד לא קיים או שם שגוי, לדוגמה), הפסק את ריצת הקוד$result = mysql_query("SELECT * FROM `students` WHERE `Fname` = 'David' and `Lname` = 'Robinson' LIMIT 1;") //בחירת נתונים מטבלה
 or die(mysql_error()); //או הפסקת ריצת הקוד, במקרה של שגיאה$row = mysql_fetch_assoc($result); //המרת התוצאות למערך אסוציאטיביecho "Personal Information\n"; //הדפסת פלט שהתקבל מהשאילתהecho "First Name: {$row['Fname']}\n";echo "Last Name: {$row['Lname']}\n";echo "Grade: {$row['grade']}\n";echo "Age: {$row['age']}";?>
וכאשר נכנס לדף, הפלט שיתקבל הוא:
Personal Information
First Name: David
Last Name: Robinson
Grade: 7th
Age: 13
השפה PHP תומכת בתכנות מונחה עצמים, הקוד הבא מראה יצירת מחלקה.
ֿ<?phpclass Car{
 /** * The car color * @var String */
 private $color;

 /** * Initialize a new car * @param String $color - the car color */
 public function __construct($color)
 {
 $this->color = $color;
 }

 /** * Get the car color * @return String */
 public function getCarColor() {
 return $this->color;
 }

 /** * Set the car color * @param String $color - the car new color * @return Void */
 public function setCarColor($color) {
 $this->color = $color;
 }}$myRedCar = new Car("Red");$myBlueCar = new Car("Blue");print( "I have two cars, one of them is " . $myRedCar->getCarColor() . " And the other is " . $myBlueCar->getCarColor() );$myBlueCar->setCarColor("Yellow");print( "<br />Tomorrow, I will replace my blue car color to " . $myBlueCar->getCarColor() );?>