Аргерих Л. О языке РНР. Часть 1. Страница 124


Логические ошибки

Логические ошибки имеют мало отношения к собственно конструкциям языка. Фактически логические ошибки происходят в коде, синтаксически и семантически корректном. О логических ошибках говорят, когда програм­мист предполагает, что код будет делать что-то одно, а код делает что-то дру­гое. Классическим примером является ошибочное написание имени пере­менной, что приводит к неприятностям, поскольку РНР не требует заранее объявлять переменные. Такие ошибки трудно выявить при отсутствии хоро­ших контрольных примеров. Рассмотрим пример логической ошибки:

<?php

//Logical_Error,php

for ($i = 1; $i < 10; $i++)

print( "Number:" . $i , "<br>");

?>

Здесь программист хотел, чтобы сценарий вывел числа от 1 до 10 включи­тельно. Однако поскольку вместо оператора сравнения <= был указан опера­тор <, последнее сравнение 10 < 10 завершилось неудачей и были выведены числа только от 1 до 9.

Конструкция f о reach, которая есть в РНР4, предотвращает возникновение таких ошибок при работе с массивами. Практический совет: использовать конструкцию о reach для обхода массивов.

Ошибки окружения

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

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

Часто некоторые функции (в основном скрытые) или их аргументы оказыва­ются недоступны на некоторых платформах, на которых работает РНР, на­пример функция socket () для создания сетевого сокета в большинстве UNIX- подобных систем принимает в качестве аргумента протокол AF_UNIX, однако это значение не поддерживается в Microsoft Windows (подробности см. в главе 13). Тем не менее обычно можно написать код так, чтобы он не содер­жал специфические для платформы функции.




Если вы хотите провести у себя в доме автономное отопление, то обязательно должны познакомиться с продукцией нашей фирмы. На сайте http://www.saturnteplo.ru/ вы сможете купить такие электрические котлы, как Сатурн, Сатурн - ПЭВН, водовоздушные установки.