@freeman0204

Как разобраться с аргументами функций на примере the_title()?

Функция с 3 аргументами, но по умолчанию у них ничего не задано. И в случаи вызова функции с 1 или 2 аргументами будет ошибка.

function better_hello($greeting, $target, $punct) {
    echo $greeting . " " . $target . $punct . "<br>";
  }

  better_hello("Hello", $name, "!");
  better_hello("Greeting", $name, "!!!");


Функция с 2 аргументами но по умолчанию у них задано пустые строки.

function paint($room="", $color="") {
    return "The color of the {$room} is {$color}.<br>";
  }

  echo paint();
  echo paint('bedroom', 'blue');
  echo paint('blue', 'bedroom');


И на выходе будет такое.

The color of the is .
The color of the bedroom is blue.
The color of the blue is bedroom.


Можно ли менять местами аргументы как в 3 случаи? От этого меняется смысл но критическая ли это ошибка?

Функция the_title();

function the_title( $before = '', $after = '', $echo = true ) {
	$title = get_the_title();

	if ( strlen($title) == 0 )
		return;

	$title = $before . $title . $after;

	if ( $echo )
		echo $title;
	else
		return $title;
}


Есть 3 аргумента

<?php the_title( $before, $after, $echo ); ?>

По умолчанию там пустые строки у первых двух и третий это булевый тип, со значением true. За счет того что есть значения по умолчанию, мы можем вызывать аргументы не 3 сразу а 1 или 2 или все 3, как я понял.

Кто может помочь, и пояснить внутренность функции the_title() ?
  • Вопрос задан
  • 183 просмотра
Решения вопроса 3
Eridani
@Eridani
Мимо проходил
Функция ждет от Вас обязательных параметров в случае
function example($param, $param2)
Значит вызываете функцию с какими-то параметрами
example(false,false);
Если там уже имеются какие либо значения, например
function index($catUrl = false, $catId = false)
То в вызове функции параметры указывать необязательно
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Если нужно вызвать функцию только со вторым параметром ($after), то первый задаем по-умолчанию

the_title('', 'after_title');
Стандартный путь в php.
Ответ написан
Комментировать
Kleindberg
@Kleindberg
Full stack
Без переделывания функции поменять местами вывод аргументов нельзя. Например, функция которая принимает два параметра - название комнаты и цвет и выводит фразу по типу "Ванная окрашена в синий":
function paint($room, $color) {
    return "{$room} окрашена в {$color}.";
}

Если передать первым не название комнаты, а цвет, то и получился фраза по типу "Синий окрашена в ванна". А теперь ближе к Вашему вопросу.

Существуют обязательные параметры функции и опциональные. В функции <?php the_title( $before, $after, $echo ); ?> получается, что третий аргумент обязателен. Поэтому <?php the_title( null, null, "Заголовок" ); ?> сработает, а <?php the_title( "|", "Заголовок"); ?> вызовет ошибку, ибо не указан третий аргумент.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы