概述
php是弱類型語言,php7可以將參數加上數據類型,實現類型約束,此文說明對象類型約束
<?php
//創建01.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());