PHP,即“PHP: Hypertext Preprocessor”,是一种被广泛使用的开放源代码多用途脚本语言,尤其适用于 web 开发并可以嵌入到 HTML 中去。其语法利用了 C,Java 和 Perl,非常容易学习。该语言的主要目标是让 web 开发人员可以很快写出动态生成的网页,但 PHP 的功能远不止如此。
上面是引用PHP手册上面的一句开场白。为什么PHP这么流行?以我个人的观点:
1.免费
2.语法简单
3.效率高
4.扩展性强
5.是从perl和C语言发展过来的
6.有很多好的"伙伴"。如linux,apache,mysql
当然在这个web技术如日中天的时期,很多新的技术在某些方面比它强出了不少,又有大的厂商支持。但它仍然没有被压迫下去其实最主要的就是因为其免费。遵循了GNU协议。LAMP即Linux+Apache +Mysql +Php。
什麼是 PHP?
PHP 是一種伺服端描述語言,用來製作動態網頁。當一個網客開啟網頁時,伺服端便會處理 PHP 指令,然後把其處理結果送到網客的網頁瀏覽器上面。就好像 ASP 或者是 ColdFusion 一樣。然而,PHP 跟 ASP 或者是 ColdFusion 不一樣的地方在於,它是開放原始碼 (Open Source) 而且是跨平台的。PHP 可以在 Windows NT 以及很多不同的 Unix 版本執行,它也可以被建成一個 Apache 模組,或者是一個 CGI 的二元檔案(binary)。當被建成一個 Apache 模組時,PHP 是特別的輕巧而快速。在這種情況下,它沒有繁瑣的程序產生的負擔,因此可以很快的把結果跑出來,而且你也不需要特別為了保持伺服器不會佔太大的記憶體空間,而去調整 mod_perl。
除了能夠用來產生你的網頁的內容之外,PHP 也可以用來傳送 HTTP 表頭(header)。你可以設定 cookies,做授權管理,以及將使用者重新導向至新的頁面(redirect users)。它也提供了優良的資料庫連結功能(還有 ODBC 的連結功能),另外還有提供與各式各樣的外部檔案庫(library),可以讓你用來做幾乎所有的事情,上至產生 PDF 文件,下至解析 XML。
PHP 程式碼就在你的網頁中,因此你不必為它建立一個開發環境或整合性開發環境(IDE)。你用 <?php 開始一段 PHP 程式,然後以 ?> 做結束。(你也可以將 PHP 設定成使用 ASP 形式的 <% %> tag 甚至是用 <SCRIPT LANGUAGE="php"></SCRIPT>。) PHP 引擎會處理 tag 之間的任何東西。
PHP 語言的語法跟 C 還有 Perl 很像。在使用變數前,你不必先宣告他們。要建立陣列(array)以及雜湊(hash)或關聯性陣列也很快。 PHP 甚至還有一些基本的物件導向功能,幫助你組織以及封裝(encapsulate)你的程式。
雖然當嵌入 Apache 裡面時,PHP 跑得最快,但是在 PHP 網站上還是有些操作指南教你如何讓它能夠天衣無縫的與 Microsoft IIS 以及 Netscape Enterprise Server 結合。如果你手邊還沒有 PHP,你可以在它的官方網站下載取得。 你也會在那裡找到一份紀錄所有 PHP 功能以及特色的手冊。
PHP 語法
PHP 的基本語法看起來很熟悉。
<?php
echo "Hello, World!";
?>
產生如下結果
Hello, World!
變數則以 $ 為開端。你可以將上面的 "Hello, World!" 寫成這樣:
<?php
$message = "Hello, World!";
echo $message;
?>
字串的串聯(concatenation)則是用 .(一個英文句點)標示出來;其他有關數字的運算符號就如同你所預期的一樣:
<?php
$greeting = "Hello ";
$num = 3 + 2;
$num++;
echo "$greeting $num peop
生如下結果
Hello 6 people!
PHP 有全套的運算元(operator),它們的運作方式就如同你所預期的一樣 -- 特別是當你有 C 或者 C++ 的知識背景時。使用 PHP 的最高指導原則:「有疑問時,先試看看;你可能會成功。」
正如 Perl 一樣,一個字串用雙引號括起來,會使得其中的變數被置換(interpolate),而如果以單引號括起來,則變數不會被置換。因此,
<?php
$name = 'Susannah';
$greeting_1 = "Hello, $name!";
$greeting_2 = 'Hello, $name!';
echo "$greeting_1/n";
echo "$greeting_2/n";
?>
產生如下結果
Hello, Susannah!
Hello, $name!
注意一下,字串中 /n 字元是換行符號,就跟 Perl 或 C 一樣。不過這只在以雙引號括起來的字串內才有效。
變數
PHP 可以讓你把環境變數當作一般變數使用。這包括伺服器為了一個 CGI 程式所設定的環境變數(即使當你以模組的方式執行 PHP,也是如此)。因此, 如果這個網頁 "http://www.domain.com/farm/cattle/cow-cow.cow.html" 包含以下程式碼
<?php
echo "[$REQUEST_URI]";
?>
它會印出 [/farm/cattle/cow-cow-cow.html]
陣列(array)
你用方形括弧([ and ]), 指定陣列(一般或關聯性)的索引:
$fruit[0] = 'banana';
$fruit[1] = 'papaya';
$favorites['animal'] = 'turtle';
$favorites['monster'] = 'cookie';
如果你授與陣列一些值,但是索引是空白的,PHP 會把這個值所代表的物件設定到陣列的尾端。上面所列有關 $fruit 這個變數,以下面的方式授與變數值,其結果是一樣的:
$fruit[] = 'banana';
$fruit[] = 'papaya';
你也可以用多維陣列:
$people['David']['shirt'] = 'blue';
$people['David']['car'] = 'minivan';
$people['Adam']['shirt'] = 'white';
$people['Adam']['car'] = 'sedan';
一個建立陣列的捷徑為
array()
函數:
$fruit = array('banana','papaya');
$favorites = array('animal' => 'turtle',
'monster' => 'cookie);
你也可以
$people = array ('David' => array('shirt' => 'blue',
'car' => 'minivan'),
'Adam' => array('shirt' => 'white',
'car' => 'sedan'));
count()