当前位置:首页 > PHP教程 > php应用 > 列表

PHP中的类型约束介绍

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-26 15:16:51 浏览: 评论:0 

这篇文章主要介绍了PHP中的类型约束介绍,PHP的类方法和函数中可实现类型约束,但参数只能指定类、数组、接口、callable 四种类型,参数可默认为NULL,PHP并不能约束标量类型或其它类型,需要的朋友可以参考下。

PHP的类方法和函数中可实现类型约束,但参数只能指定类、数组、接口、callable 四种类型,参数可默认为NULL,PHP并不能约束标量类型或其它类型。

如下示例:

  1. <?php 
  2.  
  3. class Test 
  4.     public function test_array(array $arr
  5.     { 
  6.         print_r($arr); 
  7.     } 
  8.  
  9.     public function test_class(Test1 $test1 = null) 
  10.     { 
  11.         print_r($test1); 
  12.     } 
  13.  
  14.     public function test_callable(callable $callback$data
  15.     { 
  16.         call_user_func($callback$data); 
  17.     } 
  18.  
  19.     public function test_interface(Traversable $iterator
  20.     { 
  21.         print_r(get_class($iterator)); 
  22.     } 
  23.  
  24.     public function test_class_with_null(Test1 $test1 = NULL) 
  25.     { 
  26.  
  27.     } 
  28.  
  29. class Test1{} 
  30.  
  31. $test = new Test(); 
  32.  
  33. //函数调用的参数与定义的参数类型不一致时,会抛出一个可捕获的致命错误。 
  34.  
  35. $test->test_array(array(1)); 
  36. $test->test_class(new Test1()); 
  37. $test->test_callable('print_r', 1); 
  38. $test->test_interface(new ArrayObject(array())); 
  39. $test->test_class_with_null(); 

那么对于标量类型如何约束呢?

PECL扩展库中提供了SPL Types扩展实现interger、float、bool、enum、string类型约束,代码如下:

  1. $int  = new  SplInt ( 94 ); 
  2.  
  3. try { 
  4.      $int  =  'Try to cast a string value for fun' ; 
  5. } catch ( UnexpectedValueException $uve ) { 
  6.     echo  $uve -> getMessage () .  PHP_EOL ; 
  7.  
  8. echo  $int  .  PHP_EOL ; 
  9. /* 
  10. 运行结果: 
  11. Value not an integer 
  12. 94 
  13. */ 

SPL Types会降低一定的灵活性和性能,实际项目中三思而行。

Tags: PHP类型约束

分享到: