class Person
{
public function age(int $age)
{
return $age;
}
public function name(string $name)
{
return $name;
}
public function isAlive(bool $alive)
{
return $alive;
}
}
$person = new Person();
echo $person->name('Revin');
echo $person->age(27);
echo $person->isAlive(TRUE);
上面的代码,创建一个 Person 类,里面有三个方法,每个方法接受不同类型的形参且有着类型声明。如果执行上面的代码,能够正确运行并通过类型检测。
Age 支持浮点数型,例如 27.5 如果传递一个浮点数作为age方法的形参,也是正常运行的。代码如下:
declare(strict_types = 1);
class Person
{
public function age(float $age) : float
{
return $age;
}
public function name(string $name) : string
{
return $name;
}
public function isAlive(bool $alive) : string
{
return ($alive) ? 'Yes' : 'No';
}
}
$person = new Person();
echo $person->name('revin');
echo $person->age(27.5);
echo $person->isAlive(TRUE);
上面的代码 返回类型声明使用了 data-type 语法,对于形参类型声明与返回类型声明。
举个返回类型是对象的栗子:
修改上面的代码,加Address类, Person 类中加入 getAddress 方法,并且返回类型是Address对象。
declare(strict_types = 1);
class Address
{
public function getAddress()
{
return ['street' => 'shanghai', 'country' => 'China'];
}
}
class Person
{
public function age(float $age) : float
{
return $age;
}
public function name(string $name) : string
{
return $name;
}
public function isAlive(bool $alive) : string
{
return ($alive) ? 'Yes' : 'No';
}
public function getAddress() : Address
{
return new Address();
}
}
$person = new Person();
var_dump($person->getAddress());