程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP中的類型約束介紹

PHP中的類型約束介紹

編輯:關於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會降低一定的靈活性和性能,實際項目中三思而行。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved