Это практика, которую я видел раньше, но не очень часто: переменной присваивается значение в то же самое время, когда оценивается само значение (или само выражение оценивается?). Пример:
// Outputs "The value is 1"
$value = 1;
if ($var = $value) {
echo "The value is $var";
}
Кажется, совпадает с:
$value = 1;
$var = $value;
if ($var) {
echo "The value is $var";
}
Другой пример:
// Outputs "The value is 1"
$value = 1;
echo "The value is ".$var = $value;
Я использовал это немного, чтобы сократить свой код, в основном первый пример: для оценки первой переменной или выражения при присвоении его другой в том же выражении. Примерно так:
if ($status = User::save($data)) {
echo "User saved.";
}
// do something else with $status
Это кажется таким простым, но я не могу найти никакой документации 1014 * по этому вопросу, может быть, я не уверен, где искать. Я только недавно выяснил, как это работает, увидев его годами, и мне действительно нравится его использовать, но я не хочу использовать его случайно.
Это делает код короче, может быть, не совсем понятным для некоторых, но определенно менее повторяющимся. Есть ли какие-либо предостережения с этим методом? Это совершенно безопасно, или есть ли случаи, когда он может потерпеть неудачу или вызвать неожиданное поведение? Похоже, это не очень распространенная практика, поэтому я надеялся найти объяснение, прежде чем начать «сходить с ума». Если документ задокументирован , ссылки на правильные страницы будут высоко оценены.