Как не передавать значения методам в переполнении стека

У меня есть простой класс с 1 методом, который принимает параметр.

class ArticleController
{
public function show(Article $article)
{
// some logic here
}
}

и я хочу использовать это таким образом:

$articleController = new ArticleController;
$articleController->show();

как вы видите, я не передал никакого значения методу «show». но поскольку php7 отсутствует и он заставляет передать это значение (зависимость), есть ли способ, которым я не передаю это значение методу и все еще могу использовать его без ошибок?
моя версия PHP = 7.1.8

-1

Решение

Поведение, описанное в этом вопросе, не является специфичным для 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()
6

Другие решения

В PHP вы можете установить свои значения как:

class ArticleController
{
public function show(Article $article = null)
{
// some logic here
}
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector