摘要:导语所谓类型约束,即定义一个变量的时候,必须指定其类型,并且以后该变量也只能存储该类型数据。当类型约束为接口时,可以传入实现接口的类或。参考资料类型约束标量类型声明。
导语
所谓类型约束,即定义一个变量的时候,必须指定其类型,并且以后该变量也只能存储该类型数据。PHP 虽然是弱类型语言,但是在 PHP 5 已经支持类型约束,包括对象、接口、数组,在 PHP 7 之后支持标量类型约束,下面简单写几个示例。
标量类型、数组在参数中指明类型,如果不一致,会抛出一个可捕获的致命错误
如上所示,标量类型也是如此
对象、接口类型约束也可以指定为对象或者接口。首先定义一个 Human 接口,Boy 和 Girl 两个类分别实现接口
接下来新建一个类来测试
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 "
"; $obj->girlSay(new Girl());// a girl say echo "
"; $obj->humanRun(new Boy());// a boy run echo "
"; $obj->humanRun(new Girl());// a girl run当类型约束为具体对象 Boy 或者 Girl 时,只能传入要求的对象。当类型约束为接口 Human 时,可以传入实现接口的类 Boy 或 Girl。
参考资料:PHP 5 类型约束、PHP 7 标量类型声明。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/31145.html
摘要:但是在以来,在面向对象中,为方法带来了类型约束,然而这些都非常的鸡肋,从文档上可以看到。支持对象接口支持数组支持匿名函数类型约束不能用于标量类型如或。它的运作方式,是在中设置一个标志位,让函数调用和返回类型检查符合类型约束。 起点 众所周知,PHP 是弱类型语言,与其他强类型语言项目,在这方面会有很多的坑,但是已经发展到 PHP 7 之后,PHP 也对类型约束有了所指,并且在许多流行框...
摘要:但是在的高版本语法中起,在某些特定场合,针对某些特定类型,也是可以进行语法约束的。注意在以前,类型约束不能用于标量类型如或。这意味着严格声明标量是基于文件可配的。这个指令不仅影响参数的类型声明,也影响到函数的返回值声明。 前言 众所周知,在 强类型 语言中,类型约束 是语法上的要求,即:定义一个变量的时候,必须指定其类型,并且以后该变量也只能存储该类型数据。 而我们的PHP是弱类型语言...
在 Laravel 的控制器的构造方法或者成员方法,都可以通过类型约束的方式使用依赖注入,如: public function store(Request $request) { //TODO } 这里 $request 参数就使用了类型约束,Request 是类型约束的类型,它是一个类:IlluminateHttpRequest. 本文研究 Laravel 的依赖注入原理,为什么这样定义...
阅读 1930·2021-11-24 09:39
阅读 2148·2021-09-22 15:50
阅读 2036·2021-09-22 14:57
阅读 714·2021-07-28 00:13
阅读 1079·2019-08-30 15:54
阅读 2372·2019-08-30 15:52
阅读 2699·2019-08-30 13:07
阅读 3797·2019-08-30 11:27