- •4 Безопасность жизнедеятельности 63
- •1.Теоретические основы для создания Web сайта
- •1.1 Понятие сети Интернет, история развития.
- •1.2 Понятие web-сайта
- •1.3 История создания первого в мире сайта
- •1.4 Классификация Web-сайтов
- •2 Средства разработки сайта и их сравнительный анализ
- •2.1 Язык разметки гипертекстовых страниц html
- •2.1.1 Теги языка разметки гипертекстовых страниц html
- •2.2 Язык программирования php
- •2.2.1 Сравнение языка программирования рнр с другими языками программирования Web-приложений
- •2.2.2 Достоинства языка и недостатки php
- •2.3 Технология Macromedia Flash
- •2.3.1 Классификация Macromedia Flash
- •2.3.2 Принципы использование Macromedia Flash
- •2.3.3 Использование векторной графики в Macromedia Flash
- •2.3.4 Использование технология Symbol Conversation в Macromedia Flash
- •2.3.5 Передача данных в потоковом режиме в Macromedia Flash
- •2.3.6 Работа со звуком в Macromedia Flash
- •2.3.7 Использование Action Script в Macromedia Flash
- •2.3.8 Преимущества технологии Flash
- •2.3.9 Недостатки технологии Flash
- •3. Рабочее проектирование Web сайта
- •3.1.Техническое задание
- •3.1.1 Назначение и область применения
- •3.1.2 Требования к программе
- •3.1.3Условия эксплуатации
- •3.2 Этапы создания сайта
- •3.3.SwishMax
- •3.4 Проектирование и создание основных экранов
- •3.5 Защита флеш-сайта от декомпиляторов
- •3.6 Руководство пользователя
- •4 Безопасность жизнедеятельности
2.2.2 Достоинства языка и недостатки php
Рассмотрим основные достоинства РНР:
бесплатен;
постоянно совершенствуется;
работает на UNIX и Windows платформах;
внедряется прямо в HTML-код, поэтому программисту не приходится писать программу с множеством команд для простого вывода HTML. Код HTML и РНР можно чередовать по мере необходимости. РНР позволяет написать фрагмент следующего вида:
< title>< ? print "Hello world!"; ?>< /title>
< /html>
Сообщение "Hello world!" выводится в заголовке web-страницы. Интересно то, что команда print внутри конструкции, которая обычно называется экранирующими последовательностями РНР (< ?...?>), представляет собой законченную программу. Ни длинного кода инициализации, ни включения библиотек — программа состоит лишь из того кода, который непосредственно решает поставленную задачу!
допускает работу с большинством СУБД;
имеет широкий набор функций (более 3 тыс.);
допускает объектно-ориентированное программирование;
способен использовать протоколы HTTP, FTP, ШАР, SNMP, NNTP, РОРЗ, net sockets и другие;
позволяет выполнять все операции, что и перечисленные его конкуренты, и даже работать с файлами графики. Можно также запускать РНР-скрипты как интерпретируемые файлы и компилировать исполняемые приложения (в том числе с поддержкой графического интерфейса GTK).
Если вы обнаружите, что РНР не способен на что-то (или работает не так, как вам хотелось бы), никто не будет препятствовать вам вносить в исходный код РНР (написанный на С) желаемые изменения. РНР является программным продуктом с открытым исходным кодом, и внесение в него улучшений и дополнений путем создания собственных модулей расширения всегда приветствуется.
Рассмотрим основные недостатки РНР:
Несогласованный синтаксис функций и неортогональность PHP предоставляет разработчикам большое количество самых разнообразных функций, которые попали в язык из расширений, создаваемых разными группами программистов. В результате синтаксис языка не согласован, например, часть функций для работы с массивами начинается с префикса array, другая часть этим префиксом не обладает. Названия части строковых функций начинается с префикса str, другие функции таким префиксом не обладают. В тех же строковых функциях обрабатываемая строка может передаваться как в качестве первого, так и в качестве последнего аргумента, что требует постоянного обращения к документации. Многие задачи, например разбиение строки на массив или подстроки, решаются неимоверным количеством разнообразных наборов функций. Все это связано с сильным влиянием Perl, в котором неортогональность является частью концепции. Однако PHP задумывался как промышленный и ортогональный язык, и альтернативные наборы функций для решения одних и тех же задач сильно мешают создавать код в едином стиле. К сожалению, проблема скорее всего не будет решена из соображений обратной совместимости.
Отсутствие обратной совместимости между версиями языка
Код, созданный для более ранних версий языка, зачастую не работает или работает некорректно с более поздними версиями языка. В более поздних версиях исключаются конструкции, методики, функции, применявшиеся ранее. В результате, приложения, созданные несколько лет назад, практически теряют работоспособность для современных версий языка и требуют значительной модификации. Такие изменения обусловлены двумя факторами: устранение несогласованного синтаксиса и устранение конструкций, поощряющих создание небезопасного кода. Справедливости ради, следует отметить, что отсутствие обратной совместимости вообще характерно для современных интерпретируемых языков.
Отсутствие поддержки Unicode в ядре языка
Поддержка Unicode-строк реализуется через расширение mbstring. При этом вместо стандартных функций работы со строками используются аналогичные функции, но с префиксом mb_. Сами строки не хранят информацию о своей кодировке, и её необходимо указывать вручную при вызове функций расширения mbstring. Проблема, скорее всего, будет решена в PHP 6.
Отсутствие многопоточности
В языке не предусмотрена возможность создания многопоточных приложений. Есть различные обходные решения с использованием curl и сокетов. Для POSIX-совместимых систем можно использовать функции с префиксом pcntl_. Справедливости ради, следует отметить, что PHP распространен главным образом в области Web-разработки, где зачастую проблему многопоточности берет на себя веб-сервер.
Отсутствие прямого обращения к возвращаемому массиву
В языке PHP массив, возвращаемый функцией или методом, необходимо предварительно занести в переменную, чтобы применить оператор […].
Пример:
function odds($N)
{
return range(0, $N, 2);
}
print odds(10)[2]; //ошибка
$tmp = odds(10);
print $tmp[2]; // работает
Эта проблема, скорее всего, не будет решена, так как PHP, в отличие от других языков программирования, позволяет работать не только с индексными массивами, но и с ассоциативными. Однако PHP поддерживает конструкцию list(), предлагающую концептуально иной способ работы с массивами, предоставляя разработчику возможность поместить элементы массива сразу в переменные.