PHP完全手冊
發表時間:2024-06-20 來源:明輝站整理相關軟件相關文章人氣:
[摘要]一、PHP安裝設置 PHP可以在多種操作系統下運行,現在的操作系統主要分為兩類,一是Windows系列,一是UNIX系列。 在這兩個系列的操作系統中安裝設置PHP的運行環境是有很大的區別的,下面分別加以描述。 ##2 (一)類UNIX操作系統下安裝設置 目前市面上流行...
一、PHP安裝設置
PHP可以在多種操作系統下運行,現在的操作系統主要分為兩類,一是Windows系列,一是UNIX系列。
在這兩個系列的操作系統中安裝設置PHP的運行環境是有很大的區別的,下面分別加以描述。
##2 (一)類UNIX操作系統下安裝設置
目前市面上流行的兩大類免費的類UNIX操作系統FreeBSD和Linux,Linux系統比較流行,而且種類也挺多,如RedFlag,RedHat等系統。而FreeBSD只有一種類型,目前其Release版本是3.5,在這里以FreeBSD為例介紹類UNIX操作系統下的PHP安裝設置過程,Linux與FreeBSD是相似的。
1.安裝
首先到www.php.net去下載PHP的安裝文件和http://www.apache.org 下載Apache WEB服務器。一般把下載文件放入/usr/目錄下。
接下來開始安裝設置,讀者如不明白這些參數的意義,請不要隨意改變。
先安裝Apache和PHP。
tar -vzxf apache_1.3.x --x代表版本號如12或13等
tar -vzxf php-4.0.x或tar -vzxf php-3.0.x
cd apache_1.3.x
./configure --prefix=/www --/www代表安裝目錄在根目錄www下
cd ../php-4.0.x或cd ../php-3.0.x
./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
make
make install
cd ../apache_1.3.x
PHP3:./configure --activate-module=src/modules/php3/libphp3.a
PHP4:./configure --activate-module=src/modules/php4/libphp4.a
make
make install
第一、二行命令利用tar將下載的壓縮文件檔解壓還原在同名目錄下,然后在 Apache 的解壓目錄下進行環境設定,--prefix 選項代表 Apache 的安裝目錄路徑。然后進入 PHP 的解壓目錄中,進行PHP的環境設定,如果沒有使用 MySQL 數據庫,就可省略 --with-mysql 的選項,但一定要加入 --with-apache 選項,而且 Apache解壓目錄名一定要正確。設定完 PHP 之后就編譯、安裝到 Apache 的指定目錄中。然后在 Apache 解壓目錄中再完成 PHP 的模式庫安裝后,再編譯和安裝 Apache 后就初步完成了安裝工作。接著就是要設定 Apache 才能讓 Web Server 順利運作。
2.設置
首先設置php.ini文件,
cd ../php-4.0.x或cd ../php-3.0.x
PHP3:cp php3.ini-dist /usr/local/lib/php3.ini
PHP4:cp php.ini-dist /usr/local/lib/php.ini
讀者可以編輯ini文件以符合自己要求,當然如果不清楚設置的話,則使用缺省設置,讀者也可以指定另一個目錄,但需要在第六步設定條件--with-config-file-path=/path接著設定Apache服務器,需要在Apache的設定文件httpd .conf或srm.conf中加入下面的字串。
PHP 3: AddType application/x-httpd-php3 .php3
PHP 4: AddType application/x-httpd-php .php
讀者也可以設定另外的后綴名作為php的文件名。
##2 (二) Windows下的安裝
下載PHP的安裝程序,準備安裝,因為Windows系列的安裝區別不大,本文以Windows 98下的安裝為例。在安裝前你應該已經安裝好了PWS 4.0。
1.安裝
釋放壓縮文件到指定的目錄如C:\PHP\,然后復制php.ini-dist或php.ini-optimized到c:\windows目錄中(Windows NT和Windows 2000中應為c:\winnt),并且重命名為php.ini 。
編輯你的php.ini文件,你可以改變extension_dir的設置為你的php的安裝路徑,如上面所說的“c:\php”,選擇你要加裝的php的擴展模塊,在ini文件里的extension=后面加入php_*.dll行,你也可以在腳本(script)里動態加載。PHP也提供了一些可以提供其它功能的附加模塊,可以從相關網站下載。
2.設置
以上步驟完成以后,需要注意檢查是否安裝了DCOM98,如果沒有,還要安裝DCOM98,這可以在完整版的VB6中找到。還需要設置注冊表,一般在下載的PHP壓縮包里含有名為PWS-php4.reg的注冊表文件。需要先用記事本修改這個文件,把其中的“[PUT PATH HERE]”替換為PHP的解壓目錄,需要注意目錄分隔要用雙斜線“\\”。存盤后在右鍵菜單中把它合并到注冊表中就行了。
3.PHP附加庫(擴展模塊)
為了擴展PHP的功能,PHP提供了許多附加庫,這些附加庫都是以DLL文件的形式提供的,在使用前需要修改php.ini文件,用Extention設置所需的附加庫。下表是常用的附加庫,更多的附加庫可以到網上下載。
Php_calendar.dll 日歷轉換
php_crypt.dll 加密模塊
php_dbase.dll Dbase的函數模塊
php_imap4r2.dll IMAP 4 函數
php_ldap.dll LDAP函數
php_msql1.dll mSQL 1客戶
php_msql2.dll mSQL 2客戶
php_mssql.dll MSSQL 客戶
php3_mysql.dll(PHP 4內建) MySQL 的函數模塊
php_nsmail.dll Netscape郵件函數
php_oci73.dll Oracle函數模塊
php_zlib.dll ZLib函數模塊
##1 二、PHP語言入門
PHP腳本語言的使用并不難,如果有其它程序設計語言基礎,可以很快掌握,即使沒有其它語言基礎經過稍多的學習也可以輕易掌握它。PHP有一個比較方便的專用編輯器PHPEditor可供使用,也可用UltraEdit、Editplus這樣的編輯器,根據你的喜好選擇。
##2 (一)語法基礎
1.如何在頁面嵌入PHP代碼
PHP可以嵌入到HTML的代碼中間,也就是說可以把HTML和PHP代碼混合在一起使用,這樣寫起代碼會很愜意的。當然要有能區分PHP代碼和HTML的方法,可以使用以下4種方法:
(1)<? echo (“這是最常用的方式”); ?>
(2)<?php
echo(“如果你想服務于XML文檔就是用這種方式”);
?>
(3)<script language=“php”>
echo (“指定腳本語言的方式”);
</script>
(4)<% echo (“你也可以象ASP的風格一樣寫”); %>
上面第(1)種第(4)種方式在Windows 98下需要單獨設置才能使用。
2.程序的注釋和如何結束語句
在PHP程序里,注釋有如下三種注釋方式:
(1)/* 第一行
第二行
多行注釋 */
(2)// 單行注釋
(3)# 單行注釋
上面這三種注釋可以混合使用,讀者可以根據習慣選用,需要注意的是多行注釋不能嵌套多行注釋。
PHP語句之間使用“;” 分隔,它也是語句結束符。
3.小小的范例
我們了解了PHP簡單的編碼規范,現在可以編寫一個簡單的范例如下:
<html>
<head>
<title>第一個PHP程序</title>
</head>
<body>
<?php echo “你好,這是我第一個PHP程序”; ?>
</body>
</html>
上面的例子實際上是一個標準的HTML的頁面,因為PHP是解釋執行的,所以只需把此文件放如我們設好的PHP環境里,就可以在瀏覽器上看到“你好,這是我第一個PHP程序”。
##2 (二)常量和變量
首先看下面一個實例
范例:test2_1.php
<?php
//常量的演示
echo “_FILE_”; //輸出:test2_1.php
echo “這是一個常量”; //輸出:這是一個常量
define(“THECONSTANT”,“這是一個自定義的常量”);
echo THECONSTANT; //輸出:這是一個自定義的常量
//變量的演示
$StrOutput=“這是一個變量”;
echo $StrOutput; //輸出:這是一個變量
echo “變量是這樣誕生的:$StrOutput”; //輸出:變量是這樣誕生的:這是一個變量
echo “問題是這樣出現的:$StrOutPut”; //輸出:問題是這樣出現的:
?>
可以從以上的范例看出,在編寫PHP文件的時候,可以省略HTML標頭。
1.常量
上例中“_FILE_”就是一個常量,而這個常量是PHP系統內定的,就是代表PHP的當前文件名,當然還有很多的常量,象“TRUE”、“FALSE”等,讀者如果需要的話可以去PHP的官方網站查詢;如果覺得常量不夠使用的話,也可以自己定義常量,就象上例的define(“常量名”,“常量的取值”)這種方式定義常量。
2.變量
PHP的變量是非常有意思的,上例中“$StrOutput”就是一個變量,可以看到變量前面都有一個“$”(美元)符號,所以非常好區分變量和程序里別的語句,同時PHP中的變量是可以不用預先定義而直接在代碼里引用的,而且使用了“$”這樣的符號,可以使我們的程序獲得更大的自由,不但可以象平常一樣引用變量,還可以在一個字符串里直接寫,而PHP能自動獲得變量的值,但是PHP對大小寫區分很嚴格,在上面的例子中就很清楚的說明了這一點。
(1)變量的作用范圍
PHP里的變量可以直接引用,我們定義了一個頁面級的變量,它和在函數里的同名變量之間有什么關系?這就是變量的作用范圍問題,如下例:
范例test2_2.php
<?php
$strtest="你說";
function output1()
{
echo $strtest;
}
function output2()
{
global $strtest;
echo $strtest;
}
output1(); //輸出:
output2(); //輸出:你說
?>
從上例可以看出,PHP如果直接在函數中引用與頁面變量同名的變量,它會認為函數的變量是一個新的變量,當然什么也不輸出,但如果我們在其前面增加一個“global”的話,就可以得到頁面的同名變量的值,另一種同樣的方法是$GLOBALS["strtest"];
(2)變量的變量
在php中變量與許多常用語言最大的區別就是增加了一個‘$’前綴,為什么單獨拿出來講呢?因為有了這一個前綴,同樣增加了PHP的獨特的一種處理方式,一個前綴代表普通的變量,但是兩個前綴呢?這就是變量的變量,這樣說大家可能有些不明白,請看下例。
范例:test2_3.php
<?
$name=″hello″;
$$name=″world″; //等同于$hello=″world″;
echo ″$name $hello″; //輸出:hello world
echo ″$name $$name″; //同樣輸出:hello world
for($i=1;$i<=5;$I++)
{
${var."$i"}=$i;
}
echo $var3; //輸出:3
?>
大家從上面的例子基本上可以理解$$name了,PHP的標準定義則是${$name}。我們有了變量的變量就可以實現動態增加變量了,這簡直就是神奇。
(3)變量的類型
學過其它語言的讀者會發現PHP定義的變量怎么沒有定義類型呢?實際上PHP定義的變量缺省是沒有類型的,變量在使用時由PHP自動自動確定變量的類型。就象下例演示的一樣。
范例test2_4.php:
<? php
$strtype="字符串";
/*添加字符串*/
$strtype=$strtype."再增加一些字符串 ";
/* 另一種增加字符串方式,并換行*/
$str .= "\n第二行的字符串";
/* 得到第一個字符*/
$strtype='This is a test.';
$first = $str[0]; //輸出:T
/*得到最后一個字符*/
$strtype='This is still a test.';
$last=$str[strlen($str)-1]; //輸出:.
//整數類型例子
$strtwo="2.5test";
$inttype=1;
echo ($inttype+$strtwo) //輸出:3.5
echo ("$inttype".$strtwo) //輸出:12.5test
//浮點數
$float1 = 1.732;
$float2 = 1.4E+2;
?>
這樣大家可以看出$strtype實際上是一個字符串型的變量,PHP支持五種變量類型:String、Integer、Floating-point numbers (Double)、Array、Object。
String是字符串類型。字符串變量是最常用的類型,兩個字符串連接符則是".",從上面的例子可以看出,PHP支持以“\”后面的有特殊意義的字符,如“\n”代表回車。
integer 為整數類型。在 32 位的操作系統中,它的有效范圍是 -2,147,483,648 到 +2,147,483,647。要使用 16 進制數可以在前面加 0x。
double 為浮點數類型。在 32 位的操作系統中,它的有效范圍是 1.7E-308 到 1.7E+308。對象和數組這兩種類型比較復雜,請看函數和類。
我們也可以使用settype(變量,數據類型)函數強制轉換數據類型,使用gettype(變量)獲得變量類型。也允許這樣強制轉換$inttype = (int) $strtype;。
##2 (三)運算符
1.算術運算符
算術運算 (arithmetic operators) 符號,是用來處理四則運算的符號,這是最簡單,也最常用的符號,幾乎所有語言的算術運算符都差不多,如^00100010a^。
2.邏輯運算符
邏輯運算通常用來獲得邏輯值的真假,在所有的編程語言里,邏輯運算符是非常重要的,邏輯運算符如^00100010b^所示。
3.關系運算符
關系運算就是比較大小用的,如^00100010c^所示。
4.位運算符
PHP有下面一些二進制位運算符如^00100010d^。
5.運算符的優先級
不同的運算符在同一行程序里有不同的運算順序,PHP程序里的運算順序如^00100010e^,越往下表明運算符的優先級別越高,同時應注意結合規則。
##2 (四)流程控制語句
編程人員最基本的工作之一就是要告訴計算機下一步的動作,而流程控制語句正是這方面讓計算機做出選擇,流程控制語句就象一個灌溉田地的水渠,在通過各個分岔時引導程序走向我們要求的地點。
1.if條件語句
if條件語句是我們最常用的一種分支語句,用法也符合人們思維的習慣,就想:if如果 expression(熊倪跳水得了最高分)是真的話 statements可以拿到金牌 else(否則)statements薩烏丁拿金牌。它在定義上有三種形式:
(1)第一種最簡單的形式。
if (expression) statement;
(2)第二種帶有else(否則)的形式。
if (expression) {
statement1;
} else {
statement2;
}
(3)第三種帶有elseif的形式。
if (expression) {
statement1;
} elseif {
statement2;
} else{
statement3;
}
if條件語句是允許嵌套的,也就是在if語句中含有另外的if語句,但要注意嵌套層次,否則不能得到想要的結果。
2.循環語句
有時我們需要一遍一遍的重復做相同的事,如果我們都要一次一次的去做的話,是非常頭疼的事,在計算機中則有專門的循環語句來做這些事情,當然這也是計算機的一個強項。
循環語句象一個圓,從開始到結束可以一遍一遍的執行,但最好不能是圓,否則我們會陷入死循環。因此,我們使用循環語句的時候,要有一個良好的出入口。
循環一般可以分為以下幾種。
(1)while循環,也叫“當型循環”,就是說“當條件為真就執行循環體”,在PHP中的定義如下:
while (expression)
{statement}
這種循環先判斷表達式為真再執行,可能一次也不執行。
(2)do while循環叫做“直到型循環”,它最少執行一次,意思就是“先執行循環體直到條件為真才退出”,PHP的定義為
do {
statement
} while (expr);
上面兩種循環都是不知道循環的次數,或者在條件比較模糊的情況下使用。
(3)for循環,在PHP4中有兩種for循環,一是for,另一是foreach循環。他們主要的區別在于:
for循環用于循環次數已知的循環;
foreach則是針對數組和散列的循環;
for循環的PHP定義如下:
for (expr1; expr2; expr3) {
statement
}
下面是一個簡單的例子:
<?php
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
?>
PHP有數組和散列,后面介紹它們的概念,數組元素個數沒有固定,如果要訪問每一個元素,用foreach可以從第一個元素訪問到最后一個元素,這樣我們可以不必求出元素的個數,就能遍歷整個數組,在PHP中foreach循環的定義如下:
foreach(array_expression as $value) statement //普通數組
foreach(array_expression as $key => $value) statement //散列
請做一下下面的例子:
<?php
// foreach例一
$a = array (1, 2, 3, 17);
foreach ($a as $v) {
echo "Current value of \$a: $v.\n";
}
// foreach例二
$a = array (1, 2, 3, 17);
$i = 0;
foreach($a as $v) {
echo "\$a[$i] => $k.\n";
}
// foreach例三
$a = array (
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);
foreach($a as $k => $v) {
echo "\$a[$k] => $v.\n";
}
3.SWITCH多條件語句
在學習if條件語句時,我們注意到如果條件非常復雜的時候,就象我們排一個日程表時,如果再使用if語句就會非常的麻煩,而且程序不易閱讀,這時我們推薦使用SWITCH語句,實際上一般只要是復合的條件都可以使用SWITCH語句,因為它能幫助我們編出結構清晰和比較容易改變條件表達式,PHP定義如下:
switch (expression) {
case condition1:
statement1;
break;
case condition2:
statement2;
break;
......
default:
statement n;
break;
}
這時要介紹兩個特殊的流程控制語句:break和continue。
break是可以跳出當前循環體的語句,而continue則是從當前執行continue語句處跳到執行條件判斷的地方繼續執行,如下例子:
<?php
For($I=1;$I<=10;$I++)
{
if ($I==1) continue;
echo "測試:".$I;
if ($I==2) break;
}
?>
上面的程序輸出則是:測試:2,而且永遠也執行不到$I=3。
4.引用文件
在我們編程的過程中,肯定會遇到很多的地方需要許多相同的模塊或者函數,當然我們也可以使用復制和粘貼的方法把程序塊放入到程序里,而一旦我們要修改這些語句中的一處,則必須修改所有粘貼的代碼,這當然很累,所幸PHP提供了引用文件的方法,他們就是require,require-once,include,include-once。require方法會程序在執行前先讀入 require 所指定引用的文件,使它變成 PHP 程序網頁的一部份。而PHP的include方法則是PHP 的網頁在遇到 include 所指定的文件時,才將它讀進來。這種方式,更符合人們的習慣。
在我們編程時有時還會遇到這樣一個問題,在我們極力保證函數和類的獨立性和公用性的同時,而如果在程序里面我們調用了一個非公用文件里的類,但我們的另一個處理文件也調用了這個文件里的這個類,那么程序將會出錯,說是重定義了這個類,因此,我們將不得不去重寫文件或者丟棄它的獨立性,但在PHP4里不存在這個問題,因為PHP4可以使用require-once和include-once方法,顧名思義也就是他們只調用一次我們所需要的文件,如果有兩次調用文件的話,第二次調用的文件不起作用。
##2 (五)數組
經過上面的學習,我們基本具有了使用PHP編程的條件,而我們所學的也是一切編程的基礎,但若想更進一步,就需了解更強大的數據類型:數組。
假如變量是可以放入一本書的盒子的話,那么數組就是可以放許多書的書架,在PHP中不止可以放書,還可以放別的物品。
1.普通數組
我們在C、VB等語言里使用的數組,都是以數字作為下標來索引數組的值,在PHP中是這樣表示的:$a[1]=1,$a[2]=2...$a[n],雖然PHP的普通數組比C語言在數據類型方面前進了一大步(C語言里可以使用結構代替),而真正比C語言優越的是引入了哈希表(hash table聯合數組)。
2.哈希表(聯合數組)
可能大家這時候對哈希表數組,還是不太了解,實際上在C語言里我們使用了枚舉的數據類型,就是譬如我們定義了星期的枚舉變量,我們可以讓這個枚舉里含有星期一到星期日的名字,這樣我們就可以直接引用星期的名字也能得到正確的值了,但是枚舉需要預定義,數量也是定義好的,才能引用,在PHP將其歸類到了這種聯合數組,也就是說我們的下標不必非采用數字,這樣數組的下標也成了我們可以發揮的地方。請看下例
范例:
<?php
$a[1]= $f; //普通數組
$a["apple"]= "sweet"; //聯合數組
$a[1][0]= $f; //二維數組
$a["apple"][2]="tart"; //普通數組和聯合數組連用
$a["apple"][4]["color "][0]= "bad"; //四維數組
?>
實際上數組的維數最好不要超過三維,否則會給服務器帶來極大的負擔,就有些得不償失了。
##2 (六)函數
函數就是能執行特定功能的語句塊。在這些年編程語言發展的趨勢就是代碼的重用性和結構清晰,象C的輸入輸出等就是用函數來完成的,在PHP里也是這樣的,函數在PHP運用非常廣泛,也是各種PHP函數使PHP變為強大的WEB編程腳本語言的原因之一,我們在前面的學習的過程中也遇到了不少,如“echo”、“require”等,而我們可以通過用戶定義的函數使程序結構變得更清晰、更合理以及代碼更簡潔。PHP已經預定義了大量的函數,讀者需要詳細資料的話可以查詢PHP的網站,而我們這里主要講的是如何定義使用用戶定義的函數。
1.用戶定義函數
用戶在解決一些問題時需要用戶多次完成同樣的工作,還有就是PHP沒有解決的功能等這些問題,我們則提倡使用函數。PHP定義函數的方式,沒有象變量定義那樣非常嚴格,在這里大小寫可以混用,可以在定義的時候使用大寫,使用的時候用小寫的函數名,從這點上可以看出PHP是非常地為編程人員著想,PHP的函數定義如下
function 函數名(參數1,參數2,...)
{ 語句塊
return 返回值}
PHP的函數可以有返回值,也可以沒有返回值,這樣可以省略上面的返回語句。
2.參數
<?php
$str=″我是參數1″;
$str2=″我是參數2″;
function testFunc($testarg1,testarg2,testarg3=″我是測試″)
{
echo $testarg1.″\n″;
echo $testarg2.″\n″;
echo $testarg3.″\n″;
$testarg1=$testarg1.″測試″;
$testarg2=$testarg2.″測試″;
}
testfunc($str,&$str2);
echo $str.″\n″;
echo $str2.″\n″;
/*
調用里后輸出:
我是參數1
我是參數2
我是測試
我是參數1
我是參數2測試
*/
?>
請注意看上面的函數,PHP的參數使用比較靈活,我們可以象C里面一樣使用“&”引用參數,在函數里改變參數的值的話,就直接改變了這個變量的值,也可定義參數的缺省值,這樣可以在需要的時候省略參數。
InstallShield 5.1由InstallShield公司開發,它提供了全面的軟件安裝盤制作技術。InstallShiteld 5.1與舊版本相比采用了全新的集成開發環境(IDE),使用戶僅通過鼠標就能完成安裝盤的制作。InstallShiteld 5.1分為測試版、普通版和國際版,其中國際版支持用戶在安裝過程中使用本地語言文字。下面將介紹InstallShiteld 5.1國際版的使用方法。
##1 一、InstallShiteld 5.1的安裝與卸載
1.安裝的系統要求如^00100011a^
2.安裝操作步驟如^00100011b^
3.卸載InstallShiteld 5.1
安裝完成后,安裝程序除了將主要程序文件復制到指定的目標文件夾外,還將部分DLL文件復制到Windows的系統目錄中,并自動在C盤根目錄下建立一個名為“My Installations”的文件夾,作為所制作的安裝工程的默認存放位置。在卸載前,先將該目錄下的工程進行備份,再打開Windows控制面板中的“添加/刪除程序”,選擇“InstallShield 5.1 Professional Edition”,單擊“添加/刪除”,確認后即可完成卸載。