成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

重讀PHP手冊筆記系列(二)

馬龍駒 / 456人閱讀

摘要:通過注冊自動(dòng)加載器,腳本引擎在出錯(cuò)失敗前有了最后一個(gè)機(jī)會(huì)加載所需的類構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)允行開發(fā)者在一個(gè)類中定義一個(gè)方法作為構(gòu)造函數(shù)。析構(gòu)函數(shù)會(huì)在到某個(gè)對(duì)象的所有引用都被刪除或者當(dāng)對(duì)象被顯式銷毀時(shí)執(zhí)行抽象類支持抽象類和抽象方法。

語言參考 1. 類型 1.1 簡介

1.2 Float 浮點(diǎn)型
浮點(diǎn)數(shù)的精度有限

例如,floor((0.1+0.7) * 10) 通常會(huì)返回 7 而不是預(yù)期中的 8,因?yàn)樵摻Y(jié)果內(nèi)部的表示其實(shí)是類似 7.9999999999999991118...

1.3 String 字符串
string 最大可以達(dá)到 2GB

一個(gè)字符串可以用 4 種方式表達(dá)

單引號(hào)

雙引號(hào)

heredoc 語法結(jié)構(gòu)

nowdoc 語法結(jié)構(gòu)

1.4 Array 數(shù)組
PHP 中的數(shù)組實(shí)際上是一個(gè)有序映射。映射是一種把 values 關(guān)聯(lián)到 keys 的類型。此類型在很多方面做了優(yōu)化,因此可以把它當(dāng)成真正的數(shù)組,或列表(向量),散列表(是映射的一種實(shí)現(xiàn)),字典,集合,棧,隊(duì)列以及更多可能性。由于數(shù)組元素的值也可以是另一個(gè)數(shù)組,樹形結(jié)構(gòu)和多維數(shù)組也是允許的
1.5 Resource 資源類型
資源 resource 是一種特殊變量,保存了到外部資源的一個(gè)引用。資源是通過專門的函數(shù)來建立和使用的

釋放資源

引用計(jì)數(shù)系統(tǒng)是 Zend 引擎的一部分,可以自動(dòng)檢測到一個(gè)資源不再被引用了(和 Java 一樣)。這種情況下此資源使用的所有外部資源都會(huì)被垃圾回收系統(tǒng)釋放。因此,很少需要手工釋放內(nèi)存
1.6 NULL
特殊的 NULL 值表示一個(gè)變量沒有值。NULL 類型唯一可能的值就是 NULL。

在下列情況下一個(gè)變量被認(rèn)為是 NULL

被賦值為 NULL

尚未被賦值

被 unset()

1.7 偽類型
偽類型(pseudo-types) 是 PHP 文檔里用于指示參數(shù)可以使用的類型和值。 請注意,它們不是 PHP 語言里原生類型。 所以不能把偽類型用于自定義函數(shù)里的類型約束(typehint)
2. 變量 2.1 變量范圍
變量的范圍即它定義的上下文背景(也就是它的生效范圍)。大部分的 PHP 變量只有一個(gè)多帶帶的范圍。這個(gè)多帶帶的范圍跨度同樣包含了 include 和 require 引入的文件

這里變量 $a 將會(huì)在包含文件 b.inc 中生效。但是,在用戶自定義函數(shù)中,一個(gè)局部函數(shù)范圍將被引入。任何用于函數(shù)內(nèi)部的變量按缺省情況將被限制在局部函數(shù)范圍內(nèi)

2.2 可變變量
$a = "hello";
$$a = "world";
echo "$a ${$a}";
3. 常量 3.1 魔術(shù)常量
名稱 說明
__LINE__ 文件中的當(dāng)前行號(hào)
__FILE__ 文件的完整路徑和文件號(hào)
__DIR__ 文件所在的目錄
__FUNCTION__ 函數(shù)名稱
__CLASS__ 類的名稱
__TRAIT__ Trait的名字
__METHOD__ 類的方法名
__NAMESPACE__ 當(dāng)前命名空間的名稱(區(qū)分大小寫)
4.運(yùn)算符 4.1 算術(shù)運(yùn)算符
//乘方
$a = 3;
$b = 2;
echo $a ** $b;
4.2 位運(yùn)算符
位運(yùn)算符允許對(duì)整型數(shù)中指定的位進(jìn)行求值和操作
例子 名稱 結(jié)果
$a & $b And(按位與) 將把 $a 和 $b 中都為 1 的位設(shè)為 1
$a 豎線(注1) $b Or(按位或) 將把 $a 和 $b 中任何一個(gè)為 1 的位設(shè)為 1
$a ^ $b Xor(按位異或) 將把 $a 和 $b 中一個(gè)為 1 另一個(gè)為 0 的位設(shè)為 1
~ $a Not(按位取反) 將 $a 中為 0 的位設(shè)為 1,反之亦然
$a << $b Shift left(左移) 將 $a 中的位向左移動(dòng) $b 次(每一次移動(dòng)都表示“乘以 2”)
$a >> $b Shift right(右移) 將 $a 中的位向右移動(dòng) $b 次(每一次移動(dòng)都表示“除以 2”)
注1:這里“豎線”豎線是“|”,這里 markdown 支持好像有點(diǎn)問題
4.3 比較運(yùn)算符
比較運(yùn)算符,如同它們名稱所暗示的,允許對(duì)兩個(gè)值進(jìn)行比較
例子 名稱 結(jié)果
$a == $b 等于 TRUE,如果類型轉(zhuǎn)換后 $a 等于 $b
$a === $b 全等 TRUE,如果 $a 等于 $b,并且它們的類型也相同
$a != $b 不等 TRUE,如果類型轉(zhuǎn)換后 $a 不等于 $b
$a <> $b 不等 TRUE,如果類型轉(zhuǎn)換后 $a 不等于 $b
$a !== $b 不全等 TRUE,如果 $a 不等于 $b,或者它們的類型不同
$a < $b 小與 TRUE,如果 $a 嚴(yán)格小于 $b
$a > $b 大于 TRUE,如果 $a 嚴(yán)格大于 $b
$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b
$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b
$a <=> $b 太空船運(yùn)算符(組合比較符) 當(dāng)$a小于、等于、大于$b時(shí) 分別返回一個(gè)小于、等于、大于0的integer 值。 PHP7開始提供.
$a ?? $b ?? $c NULL 合并操作符 從左往右第一個(gè)存在且不為 NULL 的操作數(shù)。如果都沒有定義且不為 NULL,則返回 NULL。PHP7開始提供
4.4 執(zhí)行運(yùn)算符
PHP 支持一個(gè)執(zhí)行運(yùn)算符:反引號(hào)(``)。注意這不是單引號(hào)!PHP 將嘗試將反引號(hào)中的內(nèi)容作為 shell 命令來執(zhí)行,并將其輸出信息返回(即,可以賦給一個(gè)變量而不是簡單地丟棄到標(biāo)準(zhǔn)輸出)。使用反引號(hào)運(yùn)算符“`”的效果與函數(shù) shell_exec() 相同
4.5 數(shù)組運(yùn)算符
例子 名稱 結(jié)果
$a + $b 聯(lián)合 $a 和 $b 的聯(lián)合
$a == $b 相等 如果 $a 和 $b 具有相同的鍵/值對(duì)則為 TRUE
$a === $b 全等 如果 $a 和 $b 具有相同的鍵/值對(duì)并且順序和類型都相同則為 TRUE
$a != $b 不等 如果 $a 不等于 $b 則為 TRUE
$a <> $b 不等 如果 $a 不等于 $b 則為 TRUE
$a !== $b 不全等 如果 $a 不全等于 $b 則為 TRUE
4.6 類型運(yùn)算符
instanceof 用于確定一個(gè) PHP 變量是否屬于某一類 class 的實(shí)例

instanceof 也可用來確定一個(gè)變量是不是繼承自某一父類的子類的實(shí)例

instanceof 也可用于確定一個(gè)變量是不是實(shí)現(xiàn)了某個(gè)接口的對(duì)象的實(shí)例

5. 流程控制 5.1 流程控制的替代語法
PHP 提供了一些流程控制的替代語法,包括 if,while,for,foreach 和 switch。替代語法的基本形式是把左花括號(hào)({)換成冒號(hào)(:),把右花括號(hào)(})分別換成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;
if (true) :
    echo "run
";
endif;
5.2 do-while 5.3 break
break 結(jié)束當(dāng)前 for,foreach,while,do-while 或者 switch 結(jié)構(gòu)的執(zhí)行

break 可以接受一個(gè)可選的數(shù)字參數(shù)來決定跳出幾重循環(huán)

5.4 continue
continue 在循環(huán)結(jié)構(gòu)用用來跳過本次循環(huán)中剩余的代碼并在條件求值為真時(shí)開始執(zhí)行下一次循環(huán)

continue 接受一個(gè)可選的數(shù)字參數(shù)來決定跳過幾重循環(huán)到循環(huán)結(jié)尾。默認(rèn)值是 1,即跳到當(dāng)前循環(huán)末尾

5.5 declare
declare 結(jié)構(gòu)用來設(shè)定一段代碼的執(zhí)行指令
declare(ticks=1);

// A function called on each tick event
function tick_handler()
{
    echo "tick_handler() called
";
}

register_tick_function("tick_handler");

$a = 1;

if ($a > 0) {
    $a += 2;
    print($a);
}
5.6 require
require 和 include 幾乎完全一樣,除了處理失敗的方式不同之外。require 在出錯(cuò)時(shí)產(chǎn)生 E_COMPILE_ERROR 級(jí)別的錯(cuò)誤。換句話說將導(dǎo)致腳本中止而 include 只產(chǎn)生警告(E_WARNING),腳本會(huì)繼續(xù)運(yùn)行
6. 函數(shù) 6.1 用戶自定義函數(shù)
當(dāng)一個(gè)函數(shù)是有條件被定義時(shí),必須在調(diào)用函數(shù)之前定義

PHP 不支持函數(shù)重載,也不可能取消定義或者重定義已聲明的函數(shù)

但是要避免遞歸函數(shù)/方法調(diào)用超過 100-200 層,因?yàn)榭赡軙?huì)使堆棧崩潰從而使當(dāng)前腳本終止。 無限遞歸可視為編程錯(cuò)誤

6.2 可變函數(shù)
PHP 支持可變函數(shù)的概念。這意味著如果一個(gè)變量名后有圓括號(hào),PHP 將尋找與變量的值同名的函數(shù),并且嘗試執(zhí)行它??勺兒瘮?shù)可以用來實(shí)現(xiàn)包括回調(diào)函數(shù),函數(shù)表在內(nèi)的一些用途
function foo() {
    echo "In foo()
"; } $func = "foo"; $func(); // This calls foo()
6.3 匿名函數(shù)
匿名函數(shù)(Anonymous functions),也叫閉包函數(shù)(closures),允許 臨時(shí)創(chuàng)建一個(gè)沒有指定名稱的函數(shù)。最經(jīng)常用作回調(diào)函數(shù)(callback)參數(shù)的值
$greet = function($name)
{
    printf("Hello %s
", $name);
};

$greet("World");
$greet("PHP");
7. 類與對(duì)象 7.1 基本概念
每個(gè)類的定義都以關(guān)鍵字 class 開頭,后面跟著類名,后面跟著一對(duì)花括號(hào),里面包含有類的屬性與方法的定義

一個(gè)類可以包含有屬于自己的常量,變量(稱為“屬性”)以及函數(shù)(稱為“方法”)

當(dāng)一個(gè)方法在類定義內(nèi)部被調(diào)用時(shí),有一個(gè)可用的偽變量 $this

7.2 類的自動(dòng)加載
在編寫面向?qū)ο螅∣OP) 程序時(shí),很多開發(fā)者為每個(gè)類新建一個(gè) PHP 文件。 這會(huì)帶來一個(gè)煩惱:每個(gè)腳本的開頭,都需要包含(include)一個(gè)長長的列表(每個(gè)類都有個(gè)文件)

在 PHP 5 中,已經(jīng)不再需要這樣了。 spl_autoload_register() 函數(shù)可以注冊任意數(shù)量的自動(dòng)加載器,當(dāng)使用尚未被定義的類(class)和接口(interface)時(shí)自動(dòng)去加載。通過注冊自動(dòng)加載器,腳本引擎在 PHP 出錯(cuò)失敗前有了最后一個(gè)機(jī)會(huì)加載所需的類

spl_autoload_register(function ($class_name) {
    require_once $class_name . ".php";
});

$obj  = new MyClass1();
$obj2 = new MyClass2();
7.3 構(gòu)造函數(shù)和析構(gòu)函數(shù)

構(gòu)造函數(shù)

PHP 5 允行開發(fā)者在一個(gè)類中定義一個(gè)方法作為構(gòu)造函數(shù)。具有構(gòu)造函數(shù)的類會(huì)在每次創(chuàng)建新對(duì)象時(shí)先調(diào)用此方法,所以非常適合在使用對(duì)象之前做一些初始化工作

析構(gòu)函數(shù)

PHP 5 引入了析構(gòu)函數(shù)的概念,這類似于其它面向?qū)ο蟮恼Z言,如 C++。析構(gòu)函數(shù)會(huì)在到某個(gè)對(duì)象的所有引用都被刪除或者當(dāng)對(duì)象被顯式銷毀時(shí)執(zhí)行
7.4 抽象類
PHP 5 支持抽象類和抽象方法。定義為抽象的類不能被實(shí)例化。任何一個(gè)類,如果它里面至少有一個(gè)方法是被聲明為抽象的,那么這個(gè)類就必須被聲明為抽象的。被定義為抽象的方法只是聲明了其調(diào)用方式(參數(shù)),不能定義其具體的功能實(shí)現(xiàn)
7.5 對(duì)象接口
使用接口(interface),可以指定某個(gè)類必須實(shí)現(xiàn)哪些方法,但不需要定義這些方法的具體內(nèi)容

接口是通過 interface 關(guān)鍵字來定義的,就像定義一個(gè)標(biāo)準(zhǔn)的類一樣,但其中定義所有的方法都是空的

接口中定義的所有方法都必須是公有,這是接口的特性

實(shí)現(xiàn)(implements)

要實(shí)現(xiàn)一個(gè)接口,使用 implements 操作符。類中必須實(shí)現(xiàn)接口中定義的所有方法,否則會(huì)報(bào)一個(gè)致命錯(cuò)誤。類可以實(shí)現(xiàn)多個(gè)接口,用逗號(hào)來分隔多個(gè)接口的名稱
7.6 Trait
自 PHP 5.4.0 起,PHP 實(shí)現(xiàn)了一種代碼復(fù)用的方法,稱為 trait

Trait 是為類似 PHP 的單繼承語言而準(zhǔn)備的一種代碼復(fù)用機(jī)制。Trait 為了減少單繼承語言的限制,使開發(fā)人員能夠自由地在不同層次結(jié)構(gòu)內(nèi)獨(dú)立的類中復(fù)用 method。Trait 和 Class 組合的語義定義了一種減少復(fù)雜性的方式,避免傳統(tǒng)多繼承和 Mixin 類相關(guān)典型問題

Trait 和 Class 相似,但僅僅旨在用細(xì)粒度和一致的方式來組合功能。 無法通過 trait 自身來實(shí)例化。它為傳統(tǒng)繼承增加了水平特性的組合;也就是說,應(yīng)用的幾個(gè) Class 之間不需要繼承

7.7 匿名類 7.8 魔術(shù)方法
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke() 等方法在 PHP 中被稱為"魔術(shù)方法"(Magic methods)
7.9 Final 關(guān)鍵字
PHP 5 新增了一個(gè) final 關(guān)鍵字。如果父類中的方法被聲明為 final,則子類無法覆蓋該方法。如果一個(gè)類被聲明為 final,則不能被繼承
8. 生成器 9. 預(yù)定義變量
名稱 用途
超全局變量 超全局變量是在全部作用域中始終可用的內(nèi)置變量
$GLOBALS 引用全局作用域中可用的全部變量
$_SERVER 服務(wù)器和執(zhí)行環(huán)境信息
$_GET HTTP GET 變量
$_POST HTTP POST 變量
$_FILES HTTP 文件上傳變量
$_REQUEST HTTP Request 變量
$_SESSION Session 變量
$_ENV 環(huán)境變量
$_COOKIE HTTP Cookies
$php_errormsg 前一個(gè)錯(cuò)誤信息
$HTTP_RAW_POST_DATA 原生POST數(shù)據(jù)
$http_response_header HTTP 響應(yīng)頭
$argc 傳遞給腳本的參數(shù)數(shù)目
$argv 傳遞給腳本的參數(shù)數(shù)組
《PHP 面試問答》
結(jié)合實(shí)際 PHP 面試,系統(tǒng)的匯總面試中的各種各樣的問題,嘗試提供簡潔準(zhǔn)確的答案。如果你在 PHP 面試中遇到問題,歡迎提 Issues 交流。包含網(wǎng)絡(luò)協(xié)議、數(shù)據(jù)結(jié)構(gòu)與算法、PHP、Web、MySQL、Redis、Linux、安全、設(shè)計(jì)模式、架構(gòu)、自我介紹、離職原因、職業(yè)規(guī)劃、準(zhǔn)備問題等部分。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/31085.html

相關(guān)文章

  • 重讀PHP手冊筆記系列(一)

    摘要:手冊序言,即,是一種被廣泛應(yīng)用的開源通用腳本語言,尤其適用于開發(fā)并可嵌入中去。該語言的主要目標(biāo)是允許開發(fā)人員快速編寫動(dòng)態(tài)生成的頁面,但的用途遠(yuǎn)不只于此。對(duì)于服務(wù)器模塊版本的,僅在服務(wù)器啟動(dòng)時(shí)讀取一次。 PHP手冊 序言 PHP,即PHP: Hypertext Preprocessor,是一種被廣泛應(yīng)用的開源通用腳本語言,尤其適用于 Web 開發(fā)并可嵌入 HTML 中去。它的語法利用了 ...

    hikui 評(píng)論0 收藏0
  • PHP開發(fā)手冊筆記PHP中關(guān)于字符串的操作函數(shù)

    摘要:字符串分解操作要進(jìn)行分解的字符串分解的長度。獲取字符串的長度函數(shù)要進(jìn)行長度計(jì)算的字符串包括首尾空格獲取字符串的子串要進(jìn)行截取的字符串截取開始的字符位置可選,要截取的字符串長度。默認(rèn)從開始到結(jié)尾,字符串的第一個(gè)位置為獲取字符串的子串 一 print和echo print 1)語法 int print(str);//str--要輸出的字符串,返回值永遠(yuǎn)為1 --語法1 p...

    lingdududu 評(píng)論0 收藏0
  • 重讀你不知道的JS (上) 第一節(jié)三章

    摘要:如果是聲明中的第一個(gè)詞,那么就是一個(gè)函數(shù)聲明,否則就是一個(gè)函數(shù)表達(dá)式。給函數(shù)表達(dá)式指定一個(gè)函數(shù)名可以有效的解決以上問題。始終給函數(shù)表達(dá)式命名是一個(gè)最佳實(shí)踐。也有開發(fā)者干脆關(guān)閉了靜態(tài)檢查工具對(duì)重復(fù)變量名的檢查。 你不知道的JS(上卷)筆記 你不知道的 JavaScript JavaScript 既是一門充滿吸引力、簡單易用的語言,又是一門具有許多復(fù)雜微妙技術(shù)的語言,即使是經(jīng)驗(yàn)豐富的 Ja...

    lavor 評(píng)論0 收藏0
  • webpack入門學(xué)習(xí)手記(

    摘要:例如現(xiàn)在的入門學(xué)習(xí)手記系列。收到粉絲留言和打賞的喜悅。安裝上一篇入門學(xué)習(xí)手記一,主要是介紹了的核心概念,是整個(gè)學(xué)習(xí)過程的基礎(chǔ)知識(shí)。新生成的類似如下入門學(xué)習(xí)手記因?yàn)樯傻膬?nèi)容過多,我直接省略掉了。 showImg(https://segmentfault.com/img/bVbk5Nd?w=1150&h=599); 本人微信公眾號(hào):前端修煉之路,歡迎關(guān)注。 最近開始想要維護(hù)一個(gè)個(gè)人的公眾...

    Joyven 評(píng)論0 收藏0
  • 重讀《學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法-第三版》- 第3章 數(shù)組(

    摘要:定場詩守法朝朝憂悶,強(qiáng)梁夜夜歡歌損人利己騎馬騾,正值公平挨餓修橋補(bǔ)路瞎眼,殺人放火兒多我到西天問我佛,佛說我也沒轍前言讀學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法第章數(shù)組,本小節(jié)將繼續(xù)為各位小伙伴分享數(shù)組的相關(guān)知識(shí)數(shù)組的新功能。 定場詩 守法朝朝憂悶,強(qiáng)梁夜夜歡歌; 損人利己騎馬騾,正值公平挨餓; 修橋補(bǔ)路瞎眼,殺人放火兒多; 我到西天問我佛,佛說:我也沒轍! 前言 讀《學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法...

    William_Sang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<