鍍金池/ 問答/PHP/ PHP 這種特殊傳參寫法叫什么名字

PHP 這種特殊傳參寫法叫什么名字

圖片描述

如圖,一根斜杠和一個Exception。另外Exception這個是干什么的

回答
編輯回答
傻叼
  1. \是PHP命名空格的分隔符,\表示根命名空間
  2. \Exception是類型聲明
2017年6月3日 01:58
編輯回答
做不到
2018年5月23日 14:57
編輯回答
解夏

“/” 是命名空間 指根下的
“Exception” 指參數(shù)類型約束 (只能使用Exception的實(shí)例來傳參)
“$e" 參數(shù) Exception 的實(shí)例

2017年3月16日 05:22
編輯回答
懶豬

 表示從根命令空間不受你 namespace 約束
類型約束 http://php.net/manual/zh/lang...
命名空間 http://php.net/manual/zh/lang...

2017年4月11日 08:44
編輯回答
扯機(jī)薄

反斜杠是 命名空間 相關(guān)的寫法,對參數(shù)進(jìn)行了類型約束。

2017年9月3日 20:54
編輯回答
傲嬌范

我不知道你有沒有學(xué)過C語言,如果學(xué)過C語言的話,我們知道定義一個函數(shù),如下:

void hello(int a) {}

他的意思是定義了函數(shù)hello,hello函數(shù)里傳的參數(shù)a必須要傳整型的。就C語言來說,數(shù)據(jù)類型基本上就是系統(tǒng)定義的那么些整型啊,浮點(diǎn)型啊,字符串啊等等。

那么來看PHP這個東西:

public function render(\Exception $e) {}

此處表示render這個方法傳遞的參數(shù)必須是 \Exception類型的,參數(shù)名是$e,官方叫法是類型約束,也就是約束這個$e必須為 \Exception;

那么來看這個 \Exception,在PHP面向?qū)ο蟪绦蛑?\這個符號指的是PHP命名空間的根目錄,一般來說這個符號代表了PHP系統(tǒng)本身定義的命名空間,調(diào)用的是系統(tǒng)本身下的類,那么此處 \Exception就是指的是PHP語言中內(nèi)置的Exception類。

Exception是PHP本身的異常類,用來產(chǎn)生程序異常,并用throw拋出,通常用 try {...} catch {...} finally {...}
這種語法結(jié)構(gòu)來獲取到Exception拋出的信息。

舉個栗子?:

try {
    $a = 111;
    if($a != 000) {
        throw new \Exception('$a不等于000'); //拋出異常
    }
} catch(\Exception $e) {
    echo $e->getMessage(); // 獲取到拋出的異常信息并輸出
}

另外一個例子:

$e = new \Exception('這里我拋出異常了哦');

此時產(chǎn)生的 $e 變量就是由 new 了一個 \Exception類得來的,此時的$e的類型是\Exception;

那么此時假設(shè)我們調(diào)用你上面的 render 方法,首先假設(shè)render封裝到一個X類中:

class X {
    public function render(\Exception $e) {}
}

那么我們:

$e = new \Exception('這里我拋出異常了哦');

$x = new X();
$x->render($e);

這段程序執(zhí)行就是正確的,如果說:

$e = 'this is string';

$x = new X();
$x->render($e);

此時的$e是string類型,PHP會報錯。

所以,你可以在調(diào)用render()的時候?qū)︻愋瓦M(jìn)行驗(yàn)證:

if($e instanceof \Exception) {
    $x->render($e);
} else {
    echo '$e不是\Exception類型';
}

后續(xù)還有更多可以深入聊的,我就不繼續(xù)說了。

2017年11月19日 09:16
編輯回答
陌如玉

表示的是namespace
Exception $e 表示接受的參數(shù) $e instanceof Exception 為真就可以

2017年9月13日 22:23
編輯回答
愛是癌

限制了接收參數(shù)的數(shù)據(jù)類型,用的是Exception數(shù)據(jù)類型,反斜杠是命名空間的寫法, Exception是你框架里的類

2017年4月6日 18:14
編輯回答
苦妄

限制入?yún)㈩愋汀?br>7.x以下支持傳對象和數(shù)組

2018年1月3日 01:13