- 相關(guān)推薦
php基礎(chǔ)知識大全
PHP是一種非常流行的開源服務(wù)器端腳本語言,下面小編整理了php基礎(chǔ)知識大全,希望對大家有幫助!
PHP 標(biāo)記
當(dāng)解析一個文件時,PHP 會尋找起始和結(jié)束標(biāo)記,也就是 ,這告訴 PHP 開始和停止解析二者之間的代碼。此種解析方式使得 PHP 可以被嵌入到各種不同的文檔中去,而任何起始和結(jié)束標(biāo)記之外的部分都會被 PHP 解析器忽略
PHP 也支持其他標(biāo)記,但是!由于各種原因和理由,請只使用“”
echo 'hello world';
?>
PHP 支持 8 種原始數(shù)據(jù)類型
四種標(biāo)量類型:布爾型、整型、浮點型、字符串
兩種復(fù)合類型:數(shù)組、對象
兩種特殊類型:資源、null
// 布爾型:true 和 false
$var = true;
// 整型
$var = 1;
// 浮點型
$var = 3.14;
// 字符串
$var = 'girl friend';
// 數(shù)組
$var = [true, 1, 3.14, 'girl friend'];
//對象
class Test{
public $value = '';
}
$var = new Test();// 類Test的對象
// 資源類型指文件、數(shù)據(jù)庫等句柄,因此這里不舉例
// null
$var = null;
變量
PHP 中的變量用一個美元符號后面跟變量名來表示。變量名是區(qū)分大小寫的
一個有效的變量名由字母或者下劃線開頭,后面跟上任意數(shù)量的字母,數(shù)字,或者下劃線
如:$var 、 $_var 、 $_1 、 $var1 ……
不合法變量的例子: $1 、1 、 var ……
PHP 的變量是動態(tài)設(shè)置和使用的,這表示,你不需要像 java 等語言那樣,需要使用一個前綴(或其他)的方式去聲明一個變量的類型,而且,PHP 變量的類型是根據(jù)上下文語境去判定,因此上面關(guān)于類型的例子是可以成功執(zhí)行的,$var 最終的值會變成 null
常量
常量是一個簡單值的標(biāo)識符(名字),常量默認(rèn)為大小寫敏感。傳統(tǒng)上常量標(biāo)識符總是大寫的
下面這個出現(xiàn)在 C 語言的笑話,在 PHP 里是行不通的,所以,不要和蠢萌的新手開這種玩笑了,同時也建議,不要隨便定義系統(tǒng)自帶的值,因為常量一旦被定義,就無法重新定義!
define("TRUE", false);
運算符
這一塊和你認(rèn)識的其他語言的運算符類似,比如 + 就是加法等等,這里只說明一些需要注意的,具體的在具體篇幅里會詳細(xì)介紹
算術(shù)運算符:+,-,*,/,%(求余)
= 是賦值號,== 是等于號,=== 是全等于(會比較類型),等號還有類似的 != 和 !==
@ 是錯誤控制運算符,可以抑制之后的表達(dá)式產(chǎn)生的錯誤,不要依賴它,因為,耗性能以及讓別人無法找出 bug
位運算符:& 按位與,| 按位或,^ 按位異或,~ 按位取反,<< 左移,>> 右移
邏輯運算符:and,or,not 或者 &&,||,!,請一定使用后者,前者可能導(dǎo)致一些問題
遞增(減)運算符:++,–
字符串拼接: ‘hello’ . ‘world’
數(shù)組運算符:+聯(lián)合,==等于,===全等于(會比較鍵值對順序),還有類似的不等于!= 和 !==,用得不多,沒有人用這種方式去比較數(shù)組,畢竟 PHP 函數(shù)很強大
類型運算符:instanceof
流程控制
if 語句
if (true) {
// 這個分支并不是一個笑話,你可以在注釋某一段代碼時使用,而且這種寫法適用于所有的程序
}elseif ( $var == 1) {
// == 是等于,在類型不一致時 PHP 會嘗試強制轉(zhuǎn)換
// 尤其注意數(shù)字的強制轉(zhuǎn)換,PHP 會嘗試把和數(shù)字比較的東西轉(zhuǎn)換成數(shù)字去比較
// 因此 '1a' == 1 是成立的,a會被丟掉
}else if ( 1 === $var ) {
// 基于 == 的不靠譜比較,請明確了解變量類型時,使用 === 代替 ==
// 并且讓常量放在前面是一個好習(xí)慣,不會因為少寫了等號變成賦值號而出現(xiàn)意外
}else {
// 以上是關(guān)于 if 的需要注意的細(xì)節(jié)以及 if 流程控制的用法,我是不是太懶了
}
for 語句
for (expr1; expr2; expr3)
for ($i = 1; $i <=10; $i++){...code...}
請不要在 for 循環(huán)的上面三個表達(dá)式當(dāng)中寫函數(shù),因為每次循環(huán)都會執(zhí)行一遍
如果要循環(huán)數(shù)組,最好使用 foreach
foreach( $array as $key => $value) {}
此外還有 while 和 do … while 循環(huán),這個和其他語言是類似的,值得一提的是,在 PHP 的編程之中,使用 foreach 的頻率最高,因為 PHP 的最終運算都是數(shù)組以及字符串(所以你看 PHP 的數(shù)組和字符串函數(shù)是不是特別多和強大)
可以使用 break 和 continue 跳過循環(huán)
switch 語句
switch($var) {
case 1:
...code...
break;
case 2:
...code...
default:
...code...
}
include 語句
包含并運行指定文件
require 語句和 include 基本等價,暫時不用區(qū)分
include_once 以及 require_once 語句不會重復(fù)包含文件,這是和 include 以及 require 的區(qū)別
include 'test.php';
其他
goto 語句、declare 語句
函數(shù)
function test($var1, &$var3, $var2 = 1) {
...code...
return $result;
}
這是一個函數(shù)的定義,其中 $var1 是必填參數(shù),$var2 帶有一個默認(rèn)值,是可選參數(shù),必填參數(shù)不能放在可選參數(shù)之后
return 會返回一個函數(shù)的值
參數(shù)可以使用引用參數(shù),如 $var3,這樣你就可以帶多個參數(shù)出來了,這種函數(shù)在 PHP 自帶的函數(shù)里很常見
關(guān)于函數(shù)的內(nèi)容,和其他語言類似,也有局部變量、全局變量、閉包等,這里暫時先不討論
類與對象
每個類的定義都以關(guān)鍵字 class 開頭,后面跟著類名,后面跟著一對花括號,里面包含有類的屬性與方法的定義,類對大小寫不敏感
一個類可以包含有屬于自己的常量,變量(稱為“屬性”)以及函數(shù)(稱為“方法”)
class A{
public $var1 = 1;
protected $var2;
private $var3;
public function test(){}
}
當(dāng)一個方法在類定義內(nèi)部被調(diào)用時,有一個可用的偽變量 $this。$this 是一個到主叫對象的引用
class A{
...code...
public function test(){
return $this->var2; // protected 屬性 $var2 沒有初始化,因此返回一個null
}
}
要創(chuàng)建一個類的實例,必須使用 new 關(guān)鍵字
...code...
$a = new A();
一個類可以在聲明中用 extends 關(guān)鍵字繼承另一個類的方法和屬性。PHP不支持多重繼承,一個類只能繼承一個基類
class B extends A {
...code...
}
命名空間
PHP 命名空間提供了一種將相關(guān)的類、函數(shù)和常量組合到一起的途徑,用來解決名字沖突或者不好起名字的問題
命名空間通過關(guān)鍵字namespace 來聲明。如果一個文件中包含命名空間,它必須在其它所有代碼之前聲明命名空間
namespace MyTest;
...code...
由于在我們在討論 PHP 的時候,可能大多數(shù)情況都是講網(wǎng)站,而如今 PHP 出現(xiàn)了大量的 web 框架,這些框架大多數(shù)也使用了命名空間(PHP 5.3 以下沒有命名空間),而他們基本上都會一個 PHP 文件對應(yīng)一個類,因此,我們給命名空間命名的時候基本遵循和類的名字一致,都是大駝峰寫法
異常處理
function inverse($num){
if ($num == 0) {
throw new Exception('錯誤:分母為0!');
}
return 1 / $num;
}
try {
echo inverse(2); // 返回 0.5
echo inverse(0); // 拋出異常
} catch (Exception $e) {
echo $e->getMessage();
}
我們想要寫一個計算倒數(shù)的函數(shù),在函數(shù)里,我們必須自己判斷分母是不是等于 0, 然后把異常拋出。
【php基礎(chǔ)知識】相關(guān)文章:
Linux認(rèn)證基礎(chǔ)知識:php相對路徑和絕對路徑05-03
PHP的壓縮函數(shù)06-21
php高級教程01-23
如何學(xué)好PHP知識09-20
淺析php函數(shù)的實例06-08
PHP的錯誤機制總結(jié)09-09