發表文章

PHP教學 - 運算子(Operators) - 上

介紹PHP中運算子的用法,包含種類、優先順序、算術運算子(Arithmetic Operator)、指派運算子(Assignment Operator)、位元運算子(Bitwise Operator)、比較運算子(Comparison Operator)、三元運算子(Ternary Operator)和錯誤控制運算子(Error Control Operator)。 1. 簡介 1.1 種類 透過提供一些數值給運算子(Operator,或運算符)進行運算,進而得到一個運算結果,可以想成類似函式的回傳,另外被運算的數值稱為運算元(Operand)。 依據運算元的個數,運算子可以分為三種: 一元運算子,只有一個運算元,例如:!, ++等。 二元運算子,包含兩個運算元,大部分都屬於這類。 三元運算子,包含三個運算元,只有? :運算子屬於此類。 而依據性質,可以分為: 算術運算子(Arithmetic Operator) 指派運算子(Assignment Operator) 位元運算子(Bitwise Operator) 比較運算子(Comparison Operator) 三元運算子(Ternary Operator) 錯誤控制運算子(Error Control Operator) 執行運算子(Execution Operator) 增值/減值運算子(Incrementing/Decrementing Operator) 邏輯運算子(Logical Operator) 字串運算子(String Operator) 陣列運算子(Array Operator) 型別運算子(Type Operator) 1.2 運算子優先順序 不 同的運算子有不同的優先順序(Precedence),例如:1 + 2 * 3是7而不是9,乘號(*)的優先順序大於加號(+)而先做。可以利用括號來增加優先順序,例如:(1 + 2) * 3為9。如果優先順序相同則依據運算子的結合律(Associativity)決定先做左或右邊。以下為運算子由高至低的順序表: 結合律 運算子 無 clone new 左 [ 右 ++ -- ~ - (int) (float) (string) (array) (object) (bool) @...

PHP教學 - 常數(Constants)

介紹PHP中常術的用法,包含語法、命名規則和魔術常數(Magic constant)。 1. 語法 變數的值會改變而稱為變數,那 相對於變數的常數,則是恆常不變的值而稱作常數(Constant)。常數在宣告之後,就無法再改變它的值,除了魔術常數(magic constant)有可能會改變,因為他並非是真正的常數。常數是有大小寫之分,而常數的命名規則和變數一樣,以正規表示法表示如下: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* 常數的使用和特性如下:     使用define()函式或const關鍵字宣告常數(PHP 5.3.0之後),但const關鍵字無法用在函式中,且和static類似,必須直接指定值,不可運算。     常數只能是數值的值,包括布林、整數、浮點數和字串,雖然也可以設為資源,但有可能會出現問題。     使用常數未定義時,會視為字串使用。可以使用defined()函式來判斷是否已定義。     和變數不一樣,常數不需要使用錢號($)做開頭。除直接使用外,也可以用constant()函式取得常數值。     常數沒有範圍(或當作是全域),任何地方宣告使用常數都為同一份。 <?php var_dump(FOOL); // string(4) "FOOL", 自動當作字串 define("FOOL", "Lala"); const Fool = "Dindin"; var_dump(FOOL); // string(4) "Lala" var_dump(Fool); // string(6) "Dindin" function func(){ var_dump(defined("FOOL")); // bool(true) //const BRA = "F"; // parse error, 不可在函式中使用 define("BRA", "...

PHP教學 - 變數(Variables)

介紹PHP變數的用法,包含命名、指派(assign)、宣告、變數範圍、預定義變數、全域變數、可變變數(Variable variables)、POST、GET 、REQUEST和COOKIE。 1. 基礎 1.1 命名規則 變數是由錢號($)開始,後面接著變數名稱,變數名稱有大小寫之分。變數名稱可以是英文字母、數字、底線和十六進位制為0x7f-0xff的字元所組成,但是第一個字元不能是以數字開頭。正規表示法如下: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* 一些宣告範例如下: ?php $User = 'dindin'; $user = 'lala'; echo "$User, $user"; // 大小寫不同: dindin, lala //$3m = '300cm'; // parse error, 不能是數字開頭 $_55 = 66; // 有效的 $lälä = '偽物'; // 有效的, 但必須存檔為UTF-8, 否則會Parse error, 'ä' ASCII 228 ?> 1.2 指派 變數的指派(assign)一般都是傳值的方式複製一份,而物件型別的變數除外。PHP中可使用(&)符號讓其他型別的變數也能以傳址的方式指派,且只有變數才能使用(&)傳址。 <?php $fool = 'dindin'; $bar = &$fool; $bar = "My name is {$bar}."; echo $bar; // My name is dindin. echo $fool; // My name is dindin. //$bar = &(24 * 7); // Parse error, 只有變數才能用& ?> 1.3 宣告 PHP中的變數並不需要特別宣告,所有未宣告的變數都視為NULL,變數的型別也會直接依據指派的值來決定。 <?p...

PHP教學 - 資料型態(Data Type) - 下

介紹PHP中的資料型態(型別),包含字串(String)、陣列(Array)、物件(Object)、資源(Resource)、NULL,型別的判斷與轉型。 5. 字串(String) 5.1 語法 字串有四種使用的方式:     單引號     雙引號     Heredoc     Nowdoc 以下逐一進行介紹。 5.1-1 單引號 以兩個單引號包夾一段文字,表示字串內容,使用單引號的字串有一些特徵如下(與雙引號比較):     逸出字元(Escape characters)只有兩種。     逸出字元\\可省略寫作\,但不可為最後一個字元(不建議省略)。     不會對字串中的變數進行解析。 所 謂逸出字元是為了某些特別的用途或能以此輸入打不出來的字,而定義的一種使用方式,在此的逸出字元以反斜線(backslash)開頭。例如,我們使用單 引號做包夾,但字串中如果出現單引號,將會誤判為字串結束單引號,所以使用\'來表示字串中的單引號。使用單引號的字串可用的逸出字元如下: 符號 說明 \' 單引號字元。 \\ 反斜線字元。 一些使用範例如下: <?php echo '基本用法'; echo '也可以 斷行'; echo 'You\'re a good man.'; // You're a good man. echo 'C:\\PHP'; // C:\PHP echo 'C:\PHP'; // C:\PHP // 不能在最後省略,\'會被解析為字元而缺少結尾單引號 //echo 'C:\PHP\'; // Parse error echo 'First line \n second line'; // First line \n second line echo 'text is $text'; // text is $text ?> 5.1-2 雙引號 以兩個雙引號包夾一段...

PHP教學 - 資料型態(Data Type) - 上

介紹PHP中的資料型態(型別),包含布林(Boolean)、整數(Integer)、浮點數(Float),型別的判斷與轉型。 1. 簡介 1.1 型別的種類 PHP 有8種基本的資料型態(Data Type)或簡稱型別(Type): 4種數值(scalar)的型別:     布林(boolean)     整數(integer)     浮點數(float或double)     字串(string) 2種複合(compound)的型別:     陣列(array)     物件(object) 另外兩種特別的型別:     資源(resource)     空值(NULL) 為了方便閱讀另外也有幾種虛擬的型別:     混合(mixed)     數字(number)     回呼(callback) 1.2 型別的判斷 可 利用get_type()函式取得型別種類或利用is_xxx()函式判斷變數是否為此型別(is_xxx()的xxx替換為要判斷的型別,例 如:is_integer)。比較特別的是is_numeric()函式,當傳入的參數為整數、浮點數或是純數字內容的字串,都回傳TRUE。 <?php $a_bool = TRUE; // boolean $an_int = 12; // integer $a_float = 1.23; // float $a_string = "foo"; // string $a_array = array(); // array $a_object = new stdClass; // object $a_re...

PHP教學-基本語法(Syntax)

PHP教學 - 基本語法(Syntax) 介紹PHP基本的語法和使用方式,包含如何執行PHP、在HTML嵌入PHP與註解。 1. 如何執行PHP? 在網站目錄下建立一個文字檔副檔名存為.php,例如:hello.php,寫入: <?php echo "Hello world"; ?> 假設你已經架設好環境,接著用瀏覽器輸入網頁路徑即可,其中echo表示輸出顯示的意思。 2. 在HTML嵌入PHP程式 2.1 嵌入方式 2.1-1. 使用<?php...?> <p>這裡不會處理 exit(); </p> <?php echo "只會處理這裡"; ?> <p>這裡也不會處理 phpinfo(); </p> 結果: 這裡不會處理 exit(); 只會處理這裡 這裡也不會處理 phpinfo(); exit()和phpinfo()的PHP指令不會執行到。 2.1-2. 使用<script language="php">...</script> <script language="php"> echo "但編輯器上色可能會有問題"; </script> 2.1-3. 使用<?...?> <? echo "php.ini的short_open_tag必須開啟"; ?> short_open_tag功能開啟後也能這樣使用 <?=$text?> 2.1-4. 使用<%...%> <% echo "php.ini的asp_tags必須開啟"; %> asp_tags功能開啟後也能這樣使用 <%=$text%> 2.1-5 交錯的用法 PHP直譯器甚至能解析交錯的用法... <script language="php">     echo "但這是很詭異的作...

drupal 7 深入研究模組開發 (一)

有鑑於 CMF drupal 系統逐漸在世界各地市佔率的提高,已玩 drupal 多年的我,最近將進行多篇 drupal7 模組開發研究分享,一方面做為個人筆記,另一方面也提供網友深層的了解及認識模組開發。參與 drupal 社群多年,一直以來感受到的玩 durpal 的朋友不外乎是有許多社群朋友的模組貢獻,減少專案的開發時程,利用現有的模組快速完成網站的開發,但由於過於依賴現有的模組,多數朋友常常不知道如何去修改客制化或者是自我開發模組,還有更多朋友是完全不會 php 誤以為只要利用 drupal 就可以輕輕鬆鬆的搭建一個客製化的系統,其實答案是錯,drupal 雖然屬於 CMS 內容管理,但更多人稱呼它是 CMF ,F 代表 framework 也就是框架,要能玩 PHP framework 框架,首先也要先具備 PHP 程式語言的技術,若基礎不懂,就不用談學好 PHP 框架技術,更遑論要學習開發 drupal 模組,因為它就是框架的技術延伸,基於 durpal8 尚未正式發表,因此在此先暫時不探討 drupal8 的模組開發,我們僅就現有的 drupal 7 模組開發進行研究學習。 首先從 drupal 7模組內的文件開始進行分析 drupal 7模組檔案包含下列: .info 模組識別文件。 具體內容參考: Drupal 7 模組 .info 文件介紹 .module 是主模組文件。所有鉤子( hook )都能寫在這裡面 .install 在第一次註冊模組( enabled )的時候,呼叫 .install 文件。他一般用來建立資料庫,插入資料。他沒有任何特別符號,只是一個不同擴展名的 PHP 文件。 卸載( uninstall )模組,或新版本模組的升級,的時候也會用到。 具體內容參考: Writing .install files (Drupal 7.x)   參考: Drupal 7 模組開發 新增自定義表( table) ( hook_schema ) .inc .inc 常被用來做輔助文件,在必要時才加載 inc 裡的程式碼。在特定情況下才執行的程式碼,如果菜單( menu )裡回調( callback )才用到程式碼,可以分開寫在單獨的 .inc 文件裡。...