Ответ 1
Это форма стенографии, которая в точности эквивалентна этому:
$confirmation = $payment_modules->confirmation();
if ($confirmation) {
}
Я пытаюсь устранить проблему и вам нужно понять, что говорит этот оператор if:
if ($confirmation = $payment_modules->confirmation()) {
Все ресурсы, которые я могу найти, показывают только выражения с двойными равными знаками, а не одиночными. Является ли это одной из сокращенных форм php, если? Что он делает?
(Если это действительно неправильный синтаксис, изменение его на знак двойного равенства не решает проблему.Как есть, в некоторых сценариях он возвращает true. В сценарии, который я искал, он не возвращает true пока я не обновить браузер.)
Любая помощь очень ценится!!!
Это форма стенографии, которая в точности эквивалентна этому:
$confirmation = $payment_modules->confirmation();
if ($confirmation) {
}
Сначала присвойте значение $payment_modules->confirmation()
$confirmation
. Оператор =
будет оценивать новое значение $confirmation
.
Это имеет тот же эффект, что и запись:
$confirmation = $payment_modules->confirmation();
if ($confirmation) {
// this will get executed if $confirmation is not false, null, or zero
}
Код работает, потому что присваивание возвращает назначенное значение, поэтому, если $payment_modules->confirmation()
- true
, $confirmation
будет установлено на true
, а затем присваивание вернет true
. То же самое для false
.
Вот почему вы можете использовать команду для назначения для многих переменных, как в a = b = 0
. Назначает ноль b
и возвращает этот ноль. Поэтому он становится a = 0
. И a
получает нуль, и он возвращает этот ноль, который может или не может быть использован.
=
означает назначение ($ a = 1), ==
для сравнения (true = false false). Я думаю, что в вашем примере он должен использовать =
, потому что он присваивает ему возвращаемое значение подтверждения, которое должно быть чем-то, что оценивается как true.
Попробуйте выполнить var_dump:
var_dump( $payment_modules->confirmation() );
Посмотрите, что логически это оценивается, и оттуда вы можете устранить неполадки. Если вам нужна дополнительная помощь, отправьте больше кода.
class test() {
public function confirmation() { return true; }
}
$boolean = test::confirmation();
var_dump( $boolean );
Приравнивается к true
Иногда люди любят выполнять задание, а затем проверяют, прошел ли уступка в порядке. Сопоставьте это с функциями, которые возвращают false (или эквивалент) при сбое, и вы можете выполнять назначение и проверку одновременно.
Чтобы понять это, помните, что назначения являются своего рода выражением, и поэтому (как и все выражения) имеют возвращаемое значение. Это возвращаемое значение равно тому, что попало в переменную. Вот почему вы можете сделать что-то вроде
a = b = c = 0;
чтобы назначить все эти переменные одновременно.