PHP中的類型約束介紹
PHP的類方法和函數(shù)中可實現(xiàn)類型約束,但參數(shù)只能指定類、數(shù)組、接口、callable 四種類型,參數(shù)可默認為NULL,PHP并不能約束標量類型或其它類型。
如下示例:
<?php
class Test
{
public function test_array(array $arr)
{
print_r($arr);
}
public function test_class(Test1 $test1 = null)
{
print_r($test1);
}
public function test_callable(callable $callback, $data)
{
call_user_func($callback, $data);
}
public function test_interface(Traversable $iterator)
{
print_r(get_class($iterator));
}
public function test_class_with_null(Test1 $test1 = NULL)
{
}
}
class Test1{}
$test = new Test();
//函數(shù)調(diào)用的參數(shù)與定義的參數(shù)類型不一致時,會拋出一個可捕獲的致命錯誤。
$test->test_array(array(1));
$test->test_class(new Test1());
$test->test_callable('print_r', 1);
$test->test_interface(new ArrayObject(array()));
$test->test_class_with_null();
那么對于標量類型如何約束呢?
PECL擴展庫中提供了SPL Types擴展實現(xiàn)interger、float、bool、enum、string類型約束。
$int = new SplInt ( 94 );
try {
$int = 'Try to cast a string value for fun' ;
} catch ( UnexpectedValueException $uve ) {
echo $uve -> getMessage () . PHP_EOL ;
}
echo $int . PHP_EOL ;
/*
運行結(jié)果:
Value not an integer
94
*/
SPL Types會降低一定的靈活性和性能,實際項目中三思而行。
相關(guān)文章
NativePHP使用PHP創(chuàng)建桌面應(yīng)用程序
這篇文章主要為大家介紹了NativePHP使用PHP創(chuàng)建桌面應(yīng)用程序,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12
Ubuntu VPS中wordpress網(wǎng)站打開時提示”建立數(shù)據(jù)庫連接錯誤”的解決辦法
這篇文章給大家介紹的是在Ubuntu VPS中wordpress網(wǎng)站打開時提示”建立數(shù)據(jù)庫連接錯誤”的解決辦法,相信"建立數(shù)據(jù)庫連接錯誤"大家并不陌生,最近我在做一個項目的時候就又遇到了這個問題,現(xiàn)在將我解決的步驟分享給大家,希望對同樣遇到這個問題的朋友們能有所幫助。2016-11-11
2個自定義的PHP in_array 函數(shù),解決大量數(shù)據(jù)判斷in_array的效率問題
大家可能都用過in_array來判斷一個數(shù)據(jù)是否在一個數(shù)組中,一般我們的數(shù)組可能數(shù)據(jù)都比較小,對性能沒什么影響,所以也就不會太在意2014-04-04
php之XML轉(zhuǎn)數(shù)組函數(shù)的詳解
本篇文章是對php中的XML轉(zhuǎn)數(shù)組函數(shù)進行了詳細的分析介紹,需要的朋友參考下2013-06-06
Codeigniter(CI)框架分頁函數(shù)及相關(guān)知識
文章主要介紹了一個自己封裝的Codeigniter(CI)框架的分頁函數(shù)以及Codeigniter(CI)框架分頁類的使用心得,非常簡單實用,希望對大家能有所幫助2014-11-11
windows安裝composer并更換國內(nèi)鏡像的過程詳解
這篇文章主要給大家介紹了windows安裝composer并更換國內(nèi)鏡像的過程詳解,文中有詳細的流程介紹,通過圖文結(jié)合講解的非常詳細,需要的朋友可以參考下2023-11-11

