概述
php是弱类型语言,php7可以将参数加上数据类型,实现类型约束,此文说明对象类型约束
<?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 './01.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 />';
exit();
$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
//总结
php7实现类型约束 以上实现了php对象类约束
public function boySay(Boy $boy)
{
参数Boy限制传入的对象必须是new Boy()得到,类名是Boy
参数$boy是new Boy()的实例
$boy->say();
}
如果传入Girl对象实例,则php就会报错,不正确的传入类对象,如下图
$obj->boySay(new Girl());