function sayHello(){
print "<h2>Hello world.</h2>";
}
之後在php程式碼區塊輸入sayHello();
就會印出 Hello world.
function add($a, $b){
return $a + $b;
}
$c = add(1,3); //$c = 4
function addByVal($c){
$c = $c + 2;
print $c;
}
function addByRef(&$c){
$c = $c + 2;
print $c;
}
$c = 1; // 變數初值
addByVal($c); //3
print $c; //1
addByRef($c); //3
print $c; //3
可參考之前介紹變數之段落
function add($a, $b, $c=0, $d=0){
return $a + $b + $c + $d;
}
此函數有兩個必須傳入之參數,如果呼叫時後面的第三個第四個參數沒有指定引述值就會使用預設參數值。add(1); //wrong!!!
add(1,2); //3
add(1,2,3); //6
add(1,2,3,4); //10
注意:預設值參數一定要為在函數參數列的最後
$func = "add";
print $func(3,4,5); //12
以上兩個功能及使用方式都很相似,只是require()引入檔一定需要存在,否則會產生執行錯誤;include()引入檔如果不存在只會顯示警告訊息,程式一樣可以繼續執行。實作上,會將PHP函數抽出成函數庫檔案,通常副檔名為.inc。include(XXXX.inc);
$stamps = time(); //會是一大串數字(從1970/1/1到指定日期/時間的秒數)_Timestamps
//$date = date("l F j Y h:i:s A", time()); //Tuesday December 20 2016 11:33:52 AM
$today = getdate($stamps);
$month = $today["month"]; //December ($today["mon"] //12)
$day = $today["mday"]; //20
$year = $today["year"]; //2016
//$today["weekday"] //星期幾(英文全名)
//$today["hours"]
//$today["minutes"]
//$today["seconds"]
strtotime("+4 months +5 days",$today); //April/25/2017 11:33:52
empty($var)
, is_null($var)
, is_bool($var)
, is_string($var)
, is_int($var)
, ...gettype($var)
settype($var, string type)
錯誤處理在寫程式是非常重要的一個環節,試想今天使用一個系統,莫名其妙地跳出密密麻麻的錯誤訊息,是一件很惱人的事情。在我前公司寫程式時,這甚至是新人報告中要特別報告的一個環節,所以就算自己在家裡寫程式不用處裡錯誤訊息,但未來就業,這是一個重要的課題。
環境錯誤
程式執行環境導致的錯誤,而不是程式設計問題。(沒有權限、檔案不存在...)
程式錯誤
程式中有bug,可能為語法錯誤、語意錯誤或程式邏輯錯誤。
錯誤處理
$fp = @fopen($file, "r") //以唯讀方式開啟file
or exit("錯誤:檔案 $file 開啟錯誤!<br/>");
如果檔案開啟成功,因為or運算的第一個運算元已經為true,運算結果為true,就不用處理第二個運算元,所以不會處理exit()。但當檔案開啟錯誤,就會執行exit()顯示參數字串和中止PHP程式執行。將exit()改為die() 會有一樣效果。
之所以不會顯示PHP內建錯誤處理的錯誤訊息是因為有使用錯誤處理運算子「@」。
其實這就像java的
try{
開檔案
}catch(錯誤){
顯示錯誤訊息or do nothing
}
PHP有提供error_reporting()函數指定PHP程式需要回報的錯誤等級。
// 設定報告等級
error_reporting(E_ERROR | E_WARNING | E_NOTICE);
// 自訂的錯誤處理函數
function myErrorHandler($type,$msg,$file,$line) {
switch( $type ) {
case E_ERROR: echo "<b>致命錯誤:</b><br/>";
break;
case E_WARNING: echo "<b>警告錯誤:</b><br/>";
break;
case E_NOTICE: echo "<b>注意錯誤</b><br/>";
break;
}
$err = "第: $line 行<br/>"; // 建立錯誤訊息
$err .= "錯誤訊息: <b>$msg</b> <br/>";
echo $err; // 顯示錯誤訊息
error_log($err, 3, "errors.log"); // 寫入記錄檔案
if ( $type == E_ERROR ) {
echo "<font color=red>終止程式執行</font>";
die(); // 終止程式執行
}
}
set_error_handler('myErrorHandler'); // 指定錯誤處理函數
執行:
$var++; // 產生注意錯誤
$x = 0; $y = 10;
$c = $y / $x; // 產生警告錯誤
結果:
trigger_error("錯誤訊息", E_USER_ERROR);
更多PHP語法訊息可以參考更多教學網站,本系列不完整介紹。