PHP 基礎 - fantasy0107/notes GitHub Wiki
大小寫區分
沒有大小寫區分
- 自訂類別
stdClass 是保留不可以使用
class Product
{
...
}
- 函式
function getProduct()
{
...
}
- 內建關鍵字
echo, while .....
有大小寫區分
- 變數
$name / $NAME / $NaMe
程式敘述與分號
$product = 'apple';
if ($product == 'apple') {
...
}
空白與斷句
空白不影響程式所以可以利用這種特性增加可讀性
註解
// 單行
# 單行
/*多行*/
字面常數
2001
0xFE
1.41
"Hello world"
'Hi'
true
null
識別字
只是個名稱, 用來命名 變數, 函式, 常數, 類別. 第一個字母必須是ASCII字母大小寫都可以
$bill
$I_HEART_PHP
常數
常數識別字只能表示純量值, 布林值, 整數, 浮點數, 以及字串都可以是常數值, 一旦設定後不能再改
define('PUBLISH', 'O'Reilly');
echo PUBLISH;
關鍵字(保留字)
是核心功能保留字, 函示, 類別以及常數的名稱不能跟關鍵字相同
資料型別
整數
-2147483648 ~ 2147483647
十進位 => 1988 / -641 / +33
八進位 => 0755 / +010
十六進位 => 0xFF / 0x10 / -0xDAD1
二進位 => 0b01100000 / -0b10
is_int($var) 可以ˇ判斷是否為整數
浮點數
1.7E-308 ~ 1.7E+308
3.14 / 0.017 / -7.1
科學記號法 => 0.314E1
is_float($var); //判斷浮點數
字串
'big dog'; //不會解釋字串
"Hi $name"; //會解釋字串
布林值
以下皆為 false
關鍵字 false
整數 0
浮點數 0.0
空字串 "" 或 "0"
沒有元素的陣列
NULL
is_bool($var) //判斷布林值
陣列
key 可以是 數字或字串
$person = ['Edison'];
$person = ['Light bulb' => 'Edison'];
foreach ($person as $name) {
...
}
foreach ($person as $value => $name) {
...
}
// is_array($var); //判斷是否為陣列
物件
定義屬性與方法. 定義類別需搭配關鍵字
class Person
{
public $name = '';
function name ($newname = NULL)
{
if (!is_null($newname)) {
$this->name = $newname;
}
return $name;
}
}
$ed = new Person;
is_object($var); // 判斷是否為物件
資源
像是資料庫連線儲存的變數背後的值有特殊意義所以可以稱為資源
callback
代表函式或物件
$callback = function () { echo 'callback'; };
call_user_func($callback);
NULL
代表變數裡頭沒有值;
$aleph = "beta";
$aleph = NULL; //代表沒有值
is_null($var);//判斷是否為null
變數
識別字必須要有 $
$name;
未設定值的變數會向 NULL一樣
動態變數名稱
$foo = 'bar';
$$foo = 'baz';
參考
$black = & $white;
可見範圍
區域, 全域, static, 函式參數
區域
函式內宣告
function updateCounter()
{
$counter++;
}
全域可見範圍
function updateCounter()
{
global $counter;
$counter++;
}
$counter = 10;
updateCounter();
echo $counter;// 11
靜態
function updateCounter()
{
static $counter = 0;
$counter++;
echo "Static counter is now {$counter}\n";
}
$counter = 10;
updateCounter(); // 1
updateCounter(); // 2
echo "Global counter is {$counter}";
函式參數
函式可以命名參數
function greet($name)
{
echo "Hello, {$name}\n";
}
垃圾回收
管理記憶體的方式
- copy-on-write: 複製不會浪費記憶體
- reference counting: 確保當記憶體不再需要時, 會將其釋放並歸> 還給作業系統
符號表
運算式與運算子
運算式: 可計算並產生值
運算子: 用運算元來做某些事情
type juggling)
隱式型別轉換(casting)("9 Lives" - 1; //8
"3.14 Pies" * 2; //6.28
"9. Lives" - 1 ; //8
"1E3 Points of Light" + 1; //1001(float)
運算子
算數
+ 和
- 差
* 乘
/ 除
% 取餘數
字串
$n = 5;
$s = 'There were'. $n . 'ducks';
遞增和遞減
++
--
比較
==
===
!= / <>
!==
>
>=
<
<=
位元
& and
| or
^ xor
<< 左移
>> 右移
邏輯
AND => and / &&
OR => || / or
XOR => xor
Not => !
轉型運算子
(int) / (integer)
(bool) / (boolean)
(float) / (double)
(string)
(array)
(object)
(unset)
其它
@ 抑制錯誤
`` 當作 shell 指令
?: => 三元運算子
instanceof 偵測物件所屬類別
流程控制
if
switch
while
for
foreach 存取陣列元素
try catch 錯誤處理
declare 定義可執行區塊
exit 結束腳本/return 回傳值
goto 跳到
引用程式碼
include / include_once (產生警告但是不會停止)
require / require_once (引入不存在屬於重大錯誤)
把 php 嵌入網頁
XML
<? php_code ?>
SGML
<?= php_code ?>
Script
<% php_code %>
直接回應
<input rtype="text" name="first_name" value="<?= "Dawn";?>">
//ASP
and this number (<% echo (2+2); %>)