《PHP實(shí)戰(zhàn):PHP中的類型約束介紹》要點(diǎn):
本文介紹了PHP實(shí)戰(zhàn):PHP中的類型約束介紹,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
PHP應(yīng)用PHP的類辦法和函數(shù)中可實(shí)現(xiàn)類型約束,但參數(shù)只能指定類、數(shù)組、接口、callable 四種類型,參數(shù)可默認(rèn)為NULL,PHP并不能約束標(biāo)量類型或其它類型.
PHP應(yīng)用如下示例:
代碼如下:
<?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ù)類型不一致時(shí),會(huì)拋出一個(gè)可捕獲的致命錯(cuò)誤.
?
$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();
PHP應(yīng)用那么對(duì)于標(biāo)量類型如何約束呢?
PHP應(yīng)用PECL擴(kuò)展庫中提供了SPL Types擴(kuò)展實(shí)現(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 ;
/*
運(yùn)行結(jié)果:
Value not an integer
94
*/
PHP應(yīng)用SPL Types會(huì)降低必定的靈活性和性能,實(shí)際項(xiàng)目中三思而行.
維易PHP培訓(xùn)學(xué)院每天發(fā)布《PHP實(shí)戰(zhàn):PHP中的類型約束介紹》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/10916.html