PHP类型约束的详细介绍(附代码)
发布:smiling 来源: PHP粉丝网 添加日期:2020-02-11 20:40:22 浏览: 评论:0
本篇文章给大家带来的内容是关于PHP类型约束的详细介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
导语:所谓类型约束,即定义一个变量的时候,必须指定其类型,并且以后该变量也只能存储该类型数据。PHP 虽然是弱类型语言,但是在 PHP 5 已经支持类型约束,包括对象、接口、数组,在 PHP 7 之后支持标量类型约束,下面简单写几个示例。
标量类型、数组
在参数中指明类型,如果不一致,会抛出一个可捕获的致命错误
- <?php
- /**
- * 数组类型约束
- * @param array $arr
- */
- function printArray(array $arr)
- {
- echo implode(',', $arr);
- }
- printArray(array(1, 2, 3));// 1,2,3
- printArray('1');// Fatal error: Uncaught TypeError: Argument 1 passed to printArray() must be of the type array, string given, called in D:\WWW\test.php on line 13 and defined in D:\WWW\test.php:7 Stack trace: #0 D:\WWW\test.php(13): printArray('1') #1 {main} thrown in D:\WWW\test.php on line 7
如上所示,标量类型也是如此
- <?php
- /**
- * 标量类型约束
- * @param string $name
- * @param int $age
- * @param float $height
- * @param bool $isBoy
- */
- function sayInfo(string $name, int $age, float $height, bool $isBoy)
- {
- echo '姓名:' . $name . ',年龄:' . $age . ',身高:' . $height . ',是否为男孩:' . ($isBoy ? '是' : '否');
- }
- sayInfo('tom', 12, 134.5, true);// 姓名:tom,年龄:12,身高:134.5,是否为男孩:是
对象、接口
类型约束也可以指定为对象或者接口。首先定义一个 Human 接口,Boy 和 Girl 两个类分别实现接口
- <?php
- /**
- * 接口
- * Interface Human
- */
- interface Human
- {
- public function say();
- public function run();
- }
- /**
- * 实现 Human 接口
- * Class Boy
- */
- class Boy implements Human
- {
- public function say()
- {
- echo 'a boy say';
- }
- public function run()
- {
- echo 'a boy run';
- }
- }
- /**
- * 实现 Human 接口
- * Class Girl
- */
- class Girl implements Human
- {
- public function say()
- {
- echo 'a girl say';
- }
- public function run()
- {
- echo 'a girl run';
- }
- }
接下来新建一个类来测试
- <?php
- include './human.php';
- class Action
- {
- /**
- * Boy 对象类型约束
- * @param Boy $boy
- */
- public function boySay(Boy $boy)
- {
- $boy->say();
- }
- /**
- * Girl 对象类型约束
- * @param Girl $girl
- */
- public function girlSay(Girl $girl)
- {
- $girl->say();
- }
- /**
- * Human 接口类型约束
- * @param Human $obj
- */
- public function humanRun(Human $obj)
- {
- $obj->run();
- }
- }
- $obj = new Action();
- $obj->boySay(new Boy());// a boy say
- echo '<br />';
- $obj->girlSay(new Girl());// a girl say
- echo '<br />';
- $obj->humanRun(new Boy());// a boy run
- echo '<br />';
- $obj->humanRun(new Girl());// a girl run
当类型约束为具体对象 Boy 或者 Girl 时,只能传入要求的对象。当类型约束为接口 Human 时,可以传入实现接口的类 Boy 或 Girl。
Tags: PHP类型约束
- 上一篇:PHP编码开发规范的介绍(附示例)
- 下一篇:PHP实现二元一次方程式的求解
相关文章
- ·PHP中的类型约束介绍(2021-05-26)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)