09-06-2018 12:02

Конструкция PHP if else: скрытая логика

Условная конструкция в реализации от PHP if else практически не отличается от аналогичных правил других языков программирования, и ожидать особенных отличий не придется еще длительное время.

В далекие времена оператор присваивания в языке Pascal был «:=», в то время как C/C++ уверенно управлялся одним «=». По сей день PHP условие if else может использовать три «странных» варианта: «=», «==», «===». Странно также использование символа «$» для обозначения переменной (JavaScript прекрасно обходится без символов уточнения переменных). Между тем рост числа программистов, использующих PHP повседневно - лучшее свидетельство практичности языка.

Суть условной конструкции

Как определить количество элементов в массиве PHP?Вам будет интересно:Как определить количество элементов в массиве PHP?

Условия определяют ветвление алгоритма. В основе условия лежит выражение, результат исполнения которого всегда только true или false. В содержании этого выражения может быть использовано любое количество операторов и вызовов функций. Это означает, что условие - это, прежде всего, алгоритм.

Исторически условное выражение записывается так:

  • (выражение1) [символ сравнения] (выражение2).

Этот момент дает возможность второму выражению использовать результаты работы первого. Этому мало кто придает значение, но зато всякий программист иногда забывает, что символ присваивания «=» - это не символ сравнения «==», а отличие между «==» и «===» является верным основанием переписать условие таким образом, чтобы можно было применить однозначное сравнение по «<» или «>».

Здесь конструкция PHP if else - как примеры «сотрудничества» двух выражений. Первое выражение инкрементирует переменную $iA (=2) и вычисляет переменную $iC (=6) в функции scfAB(). Второе выражение располагает измененным значением $iC, которое умножает на 20 и инкрементирует переменную $iB.

Использование «=», «==» и «===»

В PHP конструкция if else не предполагает использования оператора «=», поскольку это оператор присваивания, но его использование все же возможно. Важно понимать, что ошибочное указание «=» вместо «==» в большинстве случаев сделает условие истинным, вне зависимости от того, что в нем записано.

Для PHP в if () else предполагается применение только «==» или «===». Первое обозначает равенство значений после преобразования типов, второе рассчитывает на соответствие значений и их типов. Остальные операторы (больше, меньше, не равно ...) не вызывают двусмысленного толкования.

Особенность символов и их применения

Описание переменных и условная конструкция на PHP if else позволяют сформулировать проблему, которая существует достаточно давно и стала настолько привычна, что практически не заметна.

По большому счету, оператор сравнения не особенно нужен. Во-первых, во всяком языке есть конструкция исполнения выражения (PHP - не исключение), которое определено динамически в ходе исполнения скрипта. Во-вторых, абсолютно ничего не мешает формировать алгоритм ветвления по ходу исполнения основного алгоритма.

Просто PHP if else, как и его младший брат switch case, привычны и воспринимаемы как программистами, так и пользователями, привыкшими контролировать работу программистов.

Характерная ошибка, которая часто допускается: «=» или «==» - в условии допустимо второе, но никак не первое (если речь не идет об исключении из правил).

Символ «$» для описания переменной избыточен. Если в одном языке можно обойтись без дополнительной идентификации имени переменной, то в PHP это также можно сделать. Стало традиционным отделять «=» от «==». Первое - это присваивание, второе - это сравнение.

Между тем, как только интерпретатор PHP «зашел в» конструкцию if else - нет никаких сомнений, что здесь будет условие. Более того, условие по синтаксису языка PHP: if () else - всегда в скобках, то есть идентифицировать «=» в качестве оператора сравнения всегда возможно.

Другой вопрос, что использование «$» и триады: «=», «==» и «===» стало привычно, и изменить что-либо малоперспективно. Но, манипулируя условием, желательно иметь в виду сказанное. В современных языках много классических конструкций, но настает время, когда придется пересмотреть их смысл.

Программирование приобретает статус серьезного инструмента обработки динамически изменяющейся информации, а это выходит за пределы понимания, почему внутри и вне конструкции PHP if else оператор «=» сохраняет свой смысл.

Условия и объекты

С того момента, как объекты стали естественными для любой разработки, условная конструкция PHP if else сохранилась, но ее место сместилось в тело объекта. Программист может использовать условия, как ему это удобно, но, разрабатывая объекты, он переводит момент принятия решения на объект.

Система объектов приложения - это логика взаимодействия, то есть принятие решений о том, как именно работу дальше принимает объект. Если условная конструкция манипулирует объектами, а не объекты управляют ходом алгоритма, значит, в скрипте что-то сделано не так.



Источник