Heim >Backend-Entwicklung >PHP-Tutorial >PHP中的类型约束介绍_PHP教程

PHP中的类型约束介绍_PHP教程

WBOY
WBOYOriginal
2016-07-13 09:54:12824Durchsuche

PHP中的类型约束介绍

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

  PHP的类方法和函数中可实现类型约束,但参数只能指定类、数组、接口、callable 四种类型,参数可默认为NULL,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();

  //函数调用的参数与定义的参数类型不一致时,会抛出一个可捕获的致命错误。

  $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扩展实现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 ;

  /*

  运行结果:

  Value not an integer

  94

  */

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

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/998360.htmlTechArticlePHP中的类型约束介绍 这篇文章主要介绍了PHP中的类型约束介绍,PHP的类方法和函数中可实现类型约束,但参数只能指定类、数组、接口、cal...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn