У меня есть простой класс с 1 методом, который принимает параметр.
class ArticleController
{
public function show(Article $article)
{
// some logic here
}
}
и я хочу использовать это таким образом:
$articleController = new ArticleController;
$articleController->show();
как вы видите, я не передал никакого значения методу «show». но поскольку php7 отсутствует и он заставляет передать это значение (зависимость), есть ли способ, которым я не передаю это значение методу и все еще могу использовать его без ошибок?
моя версия PHP = 7.1.8
Поведение, описанное в этом вопросе, не является специфичным для PHP 7. Он также работает на PHP 5.
Вы можете установить значение по умолчанию для аргумента $article
(делая это необязательным способом), но если вы установите его NULL
тогда вы должны убедиться, что вы правильно обрабатываете значение в методе:
class ArticleController
{
public function show(Article $article = NULL)
{
if (isset($article)) {
// some logic here, $article is an object
} else {
// $article is NULL, cannot use it as an object
}
}
}
Когда вы звоните show()
не передавая ему значение, аргумент $article
инициализируется значением по умолчанию (NULL
в этом примере).
$controller = new ArticleController();
$news = new Article();
$controller->show($news);
// inside the show() method, $article is set to $news
$controller->show();
// no argument was passed, $article is NULL inside show()
В PHP вы можете установить свои значения как:
class ArticleController
{
public function show(Article $article = null)
{
// some logic here
}
}