摘要:導語所謂類型約束,即定義一個變量的時候,必須指定其類型,并且以后該變量也只能存儲該類型數據。當類型約束為接口時,可以傳入實現接口的類或。參考資料類型約束標量類型聲明。
導語
所謂類型約束,即定義一個變量的時候,必須指定其類型,并且以后該變量也只能存儲該類型數據。PHP 雖然是弱類型語言,但是在 PHP 5 已經支持類型約束,包括對象、接口、數組,在 PHP 7 之后支持標量類型約束,下面簡單寫幾個示例。
標量類型、數組在參數中指明類型,如果不一致,會拋出一個可捕獲的致命錯誤
如上所示,標量類型也是如此
對象、接口類型約束也可以指定為對象或者接口。首先定義一個 Human 接口,Boy 和 Girl 兩個類分別實現接口
接下來新建一個類來測試
say(); } /** * Girl 對象類型約束 * @param Girl $girl */ public function girlSay(Girl $girl) { $girl->say(); } /** * Human 接口類型約束 * @param Human $obj */ public function humanRun(Human $obj) { $obj->run(); } } $obj = new Action(); $obj->boySay(new Boy());// a boy say echo "
"; $obj->girlSay(new Girl());// a girl say echo "
"; $obj->humanRun(new Boy());// a boy run echo "
"; $obj->humanRun(new Girl());// a girl run當類型約束為具體對象 Boy 或者 Girl 時,只能傳入要求的對象。當類型約束為接口 Human 時,可以傳入實現接口的類 Boy 或 Girl。
參考資料:PHP 5 類型約束、PHP 7 標量類型聲明。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31145.html
摘要:但是在以來,在面向對象中,為方法帶來了類型約束,然而這些都非常的雞肋,從文檔上可以看到。支持對象接口支持數組支持匿名函數類型約束不能用于標量類型如或。它的運作方式,是在中設置一個標志位,讓函數調用和返回類型檢查符合類型約束。 起點 眾所周知,PHP 是弱類型語言,與其他強類型語言項目,在這方面會有很多的坑,但是已經發展到 PHP 7 之后,PHP 也對類型約束有了所指,并且在許多流行框...
摘要:但是在的高版本語法中起,在某些特定場合,針對某些特定類型,也是可以進行語法約束的。注意在以前,類型約束不能用于標量類型如或。這意味著嚴格聲明標量是基于文件可配的。這個指令不僅影響參數的類型聲明,也影響到函數的返回值聲明。 前言 眾所周知,在 強類型 語言中,類型約束 是語法上的要求,即:定義一個變量的時候,必須指定其類型,并且以后該變量也只能存儲該類型數據。 而我們的PHP是弱類型語言...
在 Laravel 的控制器的構造方法或者成員方法,都可以通過類型約束的方式使用依賴注入,如: public function store(Request $request) { //TODO } 這里 $request 參數就使用了類型約束,Request 是類型約束的類型,它是一個類:IlluminateHttpRequest. 本文研究 Laravel 的依賴注入原理,為什么這樣定義...
閱讀 1912·2021-11-24 09:39
閱讀 2140·2021-09-22 15:50
閱讀 2009·2021-09-22 14:57
閱讀 705·2021-07-28 00:13
閱讀 1068·2019-08-30 15:54
閱讀 2362·2019-08-30 15:52
閱讀 2688·2019-08-30 13:07
閱讀 3791·2019-08-30 11:27