たぶん私は何かを逃したかもしれませんが、関数が引数を持つか、ユーザーオブジェクトの配列などを返す必要があることを定義するオプションはありますか?
次のコードを検討してください。
<?php
class User
{
protected $name;
protected $age;
/**
* User constructor.
*
* @param $name
*/
public function __construct(string $name, int $age)
{
$this->name = $name;
$this->age = $age;
}
/**
* @return mixed
*/
public function getName() : string
{
return $this->name;
}
public function getAge() : int
{
return $this->age;
}
}
function findUserByAge(int $age, array $users) : array
{
$result = [];
foreach ($users as $user) {
if ($user->getAge() == $age) {
if ($user->getName() == 'John') {
// complicated code here
$result[] = $user->getName(); // bug
} else {
$result[] = $user;
}
}
}
return $result;
}
$users = [
new User('John', 15),
new User('Daniel', 25),
new User('Michael', 15),
];
$matches = findUserByAge(15, $users);
foreach ($matches as $user) {
echo $user->getName() . ' '.$user->getAge() . "\n";
}
findUserByAge
関数がユーザーの配列を返すように指示するPHP7のオプションはありますか? タイプヒンティングが追加されたときに可能になるはずですが、オブジェクトの配列のタイプヒンティングに関する情報が見つからないため、おそらくPHP 7には含まれていません。含まれていない場合、理由はありますか?タイプヒントが追加されたときに含まれていませんか?