變數和作用域
-
$GLOBALS[index] 的陣列中, index 保存變數的名稱,這個陣列可以在函式內部訪問,也可以直接用來更新全域變數,
-
static作用域
保持某個區域變數不被洗掉 -
引數作用域
echo和print
- echo - 可以輸出一個或多個字串
- print - 只允許輸出一個字串,回傳值總為 1(自帶換行)
提示: echo 輸出的速度比 print 快, echo 沒有回傳值,print有回傳值1,
PHP中的EOF
- 必須后接分號,否則編譯通不過,
- EOF 可以用任意其它字符代替,只需保證結束標識與開始標識一致,
- 結束標識必須頂格獨自占一行(即必須從行首開始,前后不能銜接任何空白和字符),
- 開始標識可以不帶引號或帶單雙引號,不帶引號與帶雙引號效果一致,解釋內嵌的變數和轉義符號,帶單引號則不解釋內嵌的變數和轉義符號,
- 當內容需要內嵌引號(單引號或雙引號)時,不需要加轉義符,本身對單雙引號轉義,此處相當與q和qq的用法,
常用大寫的 EOT、EOD、EOF 來表示,但是不只限于那幾個(也可以用:JSON、HTML等),只要保證開始標記和結束標記不在正文中出現即可,
位于開始標記和結束標記之間的變數可以被正常決議,但是函式則不可以,在 heredoc 中,變數不需要用連接符 . 或 , 來拼接
資料型別
- var_dump()回傳變數的型別和值
- 陣列: $x = array(1, 2, 3);
- 布爾: $x = true;
- 空值: $x = null;
- 物件: class
型別比較(沒看完)
- == : 只比較值
- ===: 比較型別和值
常量
- 設定常量: define(name, value, case_insensitive )
- name:必選引數,常量名稱,即標志符,
- value:必選引數,常量的值,
- case_insensitive :可選引數,如果設定為 TRUE,該常量則大小寫不敏感,默認是大小寫敏感的,
- 常量是全域的
函式中可以直接用常量,不用什么關鍵字!
字串變數
- 并置運算子 : " . "
- 字串長度: strlen()
- 查詢字符的位置: strpos(str1, str2)
運算子
- 算術
- 賦值
- 遞增/遞減
- 比較
- 不等于: ! 和 <>
- 絕對不等于: !== (值和型別都不同)
- 邏輯
- 與: and &&
- 或: or ||
- 非: xor !
- 陣列運算
- 集合: +
- 判斷: ==, =, !=, <>, !
- 三元:
- a1? a2: a3
- php5.3 + : 可以省略中間運算式
- PHP7+的運算
- ??
- 運算子優先級
- 括號改變運算子優先級
條件陳述句
- if 陳述句 - 在條件成立時執行代碼
- if...else 陳述句 - 在條件成立時執行一塊代碼,條件不成立時執行另一塊代碼
- if...elseif....else 陳述句 - 在若干條件之一成立時執行一個代碼塊
- switch 陳述句 - 在若干條件之一成立時執行一個代碼塊
陣列
- 創建陣列: array()
- php中有三種型別的陣列:
- 數值陣列 - 帶有數字 ID 鍵的陣列
- 關聯陣列 - 帶有指定的鍵的陣列,每個鍵關聯一個值
- 多維陣列 - 包含一個或多個陣列的陣列
- 獲取陣列的長度: count($變數名)
- 遍歷(數值和關聯的遍歷方式不同)
陣列排序
- sort() - 對陣列進行升序排列
- rsort() - 對陣列進行降序排列
- asort() - 根據關聯陣列的值,對陣列進行升序排列
- ksort() - 根據關聯陣列的鍵,對陣列進行升序排列
- arsort() - 根據關聯陣列的值,對陣列進行降序排列
- krsort() - 根據關聯陣列的鍵,對陣列進行降序排列
PHP超級全域變數
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
回圈
- while - 只要指定的條件成立,則回圈執行代碼塊
- do...while - 首先執行一次代碼塊,然后在指定的條件成立時重復這個回圈
- for - 回圈執行代碼塊指定的次數
- foreach - 根據陣列中每個元素來回圈代碼塊(用于遍歷陣列)
foreach($array as $value)
{
要執行代碼;
}
函式
```
function name(){}
```
魔術常量
__line__
__file__
__dir__
__function__
__class__
__trait__
__method__
__namespace__
命名空間(include用來匯入檔案)
- namespace MyProject{ }
- 宣告命名空間的編碼方式: declare(encoding='utf-8')
- 命名空間前出現了<html> 會致命錯誤 - 命名空間必須是程式腳本的第一條陳述句
- 子命名空間:
遵循檔案與目錄的關系namespace MyProject\Sub\Level; //宣告分層次的單個命名空間 - 命名空間的使用
- 非限定名稱,或不包含前綴的類名稱
- 限定名稱,或包含前綴的名稱
- 完全限定名稱,或包含了全域前綴運算子的名稱
- namespace運算子和__NAMESPACE__
- use運算子: 匯入 起別名用as
用use只會影響非限定和限定名稱,不會影響完全限定名稱 - 在動態型別中(是檔案和檔案之間的互相呼叫),限定和完全限定名稱沒有區別
- 全域空間:用\
面向物件
-
$this: 類自身物件
-
成員變數用var定義
-
創建物件: $a = new Car;
-
物件呼叫: ->
-
建構式:
function __construct($par1, $par2){ $this->url = $par1; $this->url = $par2; } -
解構式:
function __destruct(){} -
繼承:(PHP不支持多繼承)
class Car extends Parent{ // 代碼部分 } -
訪問控制: public, protected, private
繼承中可以對 public 和 protected 進行重定義,但 private 而不能 -
介面
- 使用介面(interface),可以指定某個類必須實作哪些方法,但不需要定義這些方法的具體內容,
- 介面是通過 interface 關鍵字來定義的,就像定義一個標準的類一樣,但其中定義所有的方法都是空的,
- 介面中定義的所有方法都必須是公有,這是介面的特性,
- 要實作一個介面,使用 implements 運算子,
- 類中必須實作介面中定義的所有方法,否則會報一個致命錯誤,類可以實作多個介面,用逗號來分隔多個介面的名稱,
-
常量: const
-
抽象類
abstract class AbstractClass
{
// 強制要求子類定義這些方法
abstract protected function getValue();
abstract protected function prefixValue($prefix);
// 普通方法(非抽象方法)
public function printOut(){
print $this->getValue() . PHP_EOL;
}
}
```
此外,子類方法可以包含父類抽象方法中不存在的可選引數,
-
static關鍵字
- 宣告類屬性或方法為 static(靜態),就可以不實體化類而直接訪問,
- 靜態屬性不能通過一個類已實體化的物件來訪問(但靜態方法可以),
- 由于靜態方法不需要通過物件即可呼叫,所以偽變數 $this 在靜態方法中不可用,
- 靜態屬性不可以由物件通過 -> 運算子來訪問,
- 自 PHP 5.3.0 起,可以用一個變數來動態呼叫類,但該變數的值不能為關鍵字 self,parent 或 static,
-
final關鍵字
- 如果父類中的方法被宣告為 final,則子類無法覆寫該方法,如果一個類被宣告為 final,則不能被繼承,
-
呼叫父類構造方法
- PHP 不會在子類的構造方法中自動的呼叫父類的構造方法,要執行父類的構造方法,需要在子類的構造方法中呼叫 parent::__construct() ,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/135903.html
標籤:PHP
