php7 参数类型限定,PHP参数类型限制 - Corwien的博客 - OSCHINA - 中文开源技术交流社区...
PHP如同其他語言(OC,Java),也引入了參數(shù)類型的檢查,不過,PHP只有數(shù)組和對象兩種限定類型,諸如string、integer這樣的限定類型是沒有的。參數(shù)類型限制,這個不論是接口,抽象類,函數(shù),方法,在5.3+以上版本都可以使用,不過目前只能聲明?array?object?這兩種.
這樣做的好處:
①:可以協(xié)調(diào)編碼,至少我不用看注釋或代碼,就知道該傳個怎樣的參數(shù)進(jìn)去。
②:對傳入的對象使用類型聲明,可不需要在函數(shù)內(nèi)使用?is_a?函數(shù)鑒別傳入對象是否合法而把甄別工作交予編譯器完成
is_a?--??如果對象屬于該類或該類是此對象的父類則返回?TRUE
class?User{
public?$name;
public?$password;
function?__construct($name,$password){
$this->name=$name;
$this->password=$password;
}
}
//參數(shù)可以指定對象類型
function?f1(User?$user){
echo?$user->name,”,”,$user->password;
}
//參數(shù)可以指定數(shù)組類型
function?f2(array?$arr){}
//參數(shù)不可以指定基本類型,下面一句會出錯
function?f3(string?$s){}
好的,接下來進(jìn)行驗證:
當(dāng)給f1()函數(shù)傳入字符串時,會報錯:
$a = 'xiaojun';
$ret = f1($a);
錯誤:
PHP Catchable fatal error: Argument 1 passed to f1() must be an instance of User, string given, called in /tmp/f921205b-ef87-4aa8-b715-a131af661abd/code on line 16 and defined in /tmp/f921205b-ef87-4aa8-b715-a131af661abd/code on line 11
錯誤描述的很清楚,必須給函數(shù)傳遞一個User的實例化對象。
這樣才是正確的:
//?實例化對象,并初始化
$user_obj?=?new?User("kaiyi",?'123456');
$ret?=?f1($user_obj);
總結(jié)
以上是生活随笔為你收集整理的php7 参数类型限定,PHP参数类型限制 - Corwien的博客 - OSCHINA - 中文开源技术交流社区...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机win7无法安装,新机装不了Win
- 下一篇: php怎么去除变量里的换行,php去除字