上次的課程中,我已經預告,這次要進入真正寫PHP程式的進度了,讓我們來看看今天的程式碼。
今天一共有12行,非常非常非常基本!請仔細的記憶與思考,記得,最前面有寫行數,那是不包含在程式裡的,是為了標示第幾行用的,當你在撰寫的時候,不要把那1 2 3....也寫進程式裡去嘍:
1 <?
2 $target="settings.php";
3 $cntinfo="<?\n\$DB_SERVER=\"localhost\";\n\$DB_ADMIN=\"$db_admin\";\n\$DB_PWD=\"$db_password\";?>";
4 $fp=fopen($target,"w");
5 if($fp){
6 $length=fwrite($fp,$cntinfo);
7 fclose($fp);
8 echo "<table border=\"1\" BORDERCOLOR=\"blue\"><tr><td>初步設定檔已寫入</td></tr></table>";
9 }else{
10 echo "設定檔寫入失敗,請檢查";
11 }
12 ?>
這就是PHP的程式碼,這個PHP檔案我們將存為「setupdata1.php」,這個檔名有沒有很熟悉?這就是上次我們寫的那個HTML檔案之中的表單部分裡面,一開始寫到的:「<form action="setupdata1.php" method="post" id="setupdata1">」這一行中,表單用「action=」這個指示,呼叫「setupdata1.php」這個檔案來做事。
讓我們來好好看一下這個PHP檔案的開頭〈第1行〉和結尾〈第12行〉這2行,這就是PHP程式的表示,在「<?」和「?>」這兩組符號包裹之中的部分,瀏覽器就會解讀:「啊!這裡是PHP的程式碼!我來仔細看看他要說什麼!」,正規的寫法是以「<?php」做為開頭,不過現在的版本已經可以接受這樣的短寫法,我們學這種簡單且能前後對應的方式就行了。
接著,我們看第2行,「$target="settings.php";」,從這行開始大家就要頭大了,如果你沒有程式語言的經驗,從這裡開始要多留意學了喔!!這一行一開始的「$target」是一個「變數」,「target」是我們取的名稱,在這個名稱前面加一個「$」符號,就成了變數,「$target」的意思就是「這是個名為target的變數」,我們可以想像變數是一個袋子,袋子裡要裝東西,這是一個叫做「target」的袋子,而袋子裡的東西可以換,不過每次要裝一個新的東西進去時,就要把之前裝的東西給拿丟掉再裝新的東西,就好比說把一隻企鵝裝進冰箱要三個步驟,一,打開冰箱,二,把企鵝裝進去,三,關上冰箱。而把長頸鹿裝進冰箱則需要四個步驟,一,打開冰箱,二,把企鵝拿出來,三,把長頸鹿放進去,四,關上冰箱。好冷的笑話,是嗎?很重要的觀念喔!冰箱是同一個,已經裝了企鵝了,當然要再裝長頸鹿,就要先把企鵝拿出來啦!變數也是相同,如果要給同一個變數另一個不一樣的新內容,那前一個內容就會像企鵝一樣,被先拿出來再說啦。
這個叫做target的袋子現在要裝什麼東西呢?就是後面的「settings.php」這一串字,注意了!我們這裡寫的是「$target="settings.php";」,不是「$target=settings.php;」,為什麼呢?因為settings.php雖然我們知道那將會是一個檔案的名稱,但是我們只要那個檔名就好了,而檔名是一個「字串」,當我們要在變數這個袋子裡裝入一個字串,就要把這個字串用「"」前後包起來。
用檔名來講會比較複雜,用數字來說明會比較清楚些,例如我們這裡準備了兩個袋子....兩個變數啦,一個叫做$a,一個叫做$b,我們在$a袋子裡裝入「2」這個「字串」,在$b袋子裡裝入「5」這個「字串」,那我們會寫成:
$a="2";
$b="5";
我們可以想像這兩個袋子裡裝的分別是「2」和「5」兩個生日蛋糕上插的那種數字蠟燭。好,當我們把這兩個袋子放在一起加起來,也就是「$a+$b」時,會發生什麼狀況呢?就像從袋子裡將那兩個蠟燭拿出來放在一起,也就是「25」啦!
如果我們不是要像蠟燭排在一起的方式來表示相加的結果,而是真的要計算2+5這個「值」會是多少,那我們的變數就要寫成:
$a=2;
$b=5;
如此「$a+$b」才會等於「7」喔!這樣有了解嗎?所以,當變數這個袋子要裝字串的時候,記得要在前後加上引號「"」。
這一行最後有個「;」,表示「這一行的敘述我寫完了,下面一行是下一個敘述的新開始了喔!」,這是一開始學寫程式的人最容易忽略的錯誤,記得養成習慣!
第2行解釋完,第3行就簡單理解了,$cntinfo這是第二個我們設定的變數,就好比除了「$target」這個袋子外,我又準備了一個叫「$cntinfo」的袋子,這個「$cntinfo」袋子裡我要裝什麼呢?就是要裝「<?\n\$DB_SERVER=\"localhost\";\n\$DB_ADMIN=\"$db_admin\";\n\$DB_PWD=\"$db_password\";?>";」這一堆字串。
後!這一段好長耶!對啊!就是因為長,所以把它裝在這叫做$cntinfo的袋子裡,再來我們要用到這一串字的時候,只要把袋子整個拿過來用就好了,這就是變數的一個重要功能。
這一串字基本上也含有好幾個變數在裡頭,我待會再回頭解釋這一串文字的意思,你可以先思考看看。
先看第4行,「$fp=fopen($target,"w");」又是一個袋子,這次的袋子叫做「$fp」,只不過這個袋子裡裝的東西不是字串,而是一個「函式」,什麼是函式呢?簡單的說就是PHP的內建功能之一,你可以把函式想像成一個個的工具,當我們要做一些工作的時候,不必辛苦的自己打造工具,只要利用這些既有的工具來完成就可以了,這個叫做$fp的袋子裡就裝著個叫做「fopen( )」的工具,這個fopen( )的工具要做的工作是「開啟一個檔案,並且準備對這檔案的內容進行一些事」,而我們在括弧裡寫上「$target,"w"」,就是告訴這個工具「我們要開啟的檔案名稱是那個裝在$target袋子裡的那個字串,並且用"w"這個附加選項表示我們準備將一些資訊從那個檔案的一開頭位置來寫進去!如果資料夾裡找不到和$target袋子裡裝的字串一樣名字的檔案時,那就新增一個和$target袋子裡裝的字串一樣名字的檔案以後再來進行這個寫入工作準備!」
關於fopen( )函示的用法和參數,可以參考:http://php.net/manual/en/function.fopen.php
看不懂沒關係,知道現在這個用法就可以了,接下來我們還有可能會用到這個函式,並且用不同的參數去進行不同的工作,現在只要知道,fopen( )這個函式是拿來開啟檔案工作用的函式,但是!這裡說的「開啟檔案」和你在現在眼前的這部電腦上面找個檔案點兩下,然後你就「看到那個程式在你眼前被打開了」的情況有點不一樣,用這個函式是直接告訴程式「程式啊,你自己去找到並且打開那個檔案喔,找不到的就自己先建立一個同名的檔案再打開,我待會告訴你打開檔案以後要做的事,然後程式你自己去處理就好了,不必開給我看你是怎麼處理的!OK~?」,所以,你不會「看到」有個檔案被打開來這樣的情形,瞭嗎?(唉....如果現在還是DOS時代.....那可能就比較容易理解了.....當時的人類面對電腦螢幕時,似乎比較有想像力,只有個電腦游標閃啊閃的,也可以想像很多的情境.....)
而$target袋子裡裝的字串叫什麼?前面說了喔!叫做「settings.php」啊!所以基本上這一行也可以寫成「$fp=fopen("settings.php","w");」,注意嘍!當我不是用變數$target而是直接把檔名settings.php寫在括弧裡時,我會在前後加上「"」,變成「"settings.php"」,注意到了沒?用變數來表示的時候就不必加「"」了。這樣是不是更進一步理解變數的用法了呢?
今天先學到這裡,先休息一下,明天繼續把後面幾行解釋完,對第一次接觸PHP的人就解釋函式,我一定瘋了!
沒有留言:
張貼留言