Разработка и внедрение программного обеспечения на примере компании TOO "Illustrate studio"

Область применения и требования создаваемого Web-приложения. Требования к техническому и программному обеспечению. Разработка структуры Web-приложения и выбор средств программной реализации. Программная реализация Web-приложения. Структура базы данных.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 03.06.2014
Размер файла 1,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

JAVA - апплеты. Язык программирования JAVA был специально создан для Интернет. С помощью него можно создать довольно эффектные элементы страницы - например, выезжающее меню или анимированные кнопки.

GGI - скрипты. Формы. Другая дизайнерская полезность, созданная программистами. GGI - скрипты - это "мини - программы", ссылки на которые можно вставить в тело самой страницы. Эти программы помогают автматизировать многие сложные операции, вводимые посетителями, данными и т.д. С помощью них можно создать гостевую книгу, анкету, поисковик и многие другие вещи.

Счетчики. Одна из самых распространенных форм скриптов, которая служит для подсчета посетителей страницы.

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

Навигационная панель присутствует на экране постоянно, упрощая перемещение по сайту. При щелчке по любой кнопке - ссылке новая страница открывается во втором большом окне [8].

2.4.2 Язык программирования php

PHP (Hypertext Preprocessor - Препроцессор Гипертекста) - это широко используемый язык сценариев общего назначения с открытым исходным кодом.

PHP - язык программирования, специально разработанный для написания web-приложений (скриптов, сценариев), исполняющихся на Web-сервере. Синтаксис языка во многом основывается на синтаксисе C, Java и Perl. Он очень похож на С и на Perl, поэтому для профессионального программиста не составит труда его изучить. С другой стороны, язык PHP проще, чем C, и его может освоить веб-мастер, не знающий пока других языков программирования.

Огромным плюсом PHP, в отличие от, например, JavaScript, является то, что PHP-скрипты выполняются на стороне сервера. PHP не зависит от скорости компьютера пользователя или его браузера, он полностью работает на сервере. Пользователь даже может не знать, получает ли он обычный HTML-файл или результат выполнения скрипта.

Сценарии на языке PHP могут исполняться на сервере в виде отдельных файлов, а могут интегрироваться в html страницы.

PHP способен генерировать и преобразовывать не только HTML документы, но и изображения разных форматов - JPEG, GIF, PNG, файлы PDF и FLASH. PHP способен формировать данные в любом текстовом формате, включая XHTML и XML.

PHP - кроссплатформенная технология. Дистрибутив PHP доступен для большинства операционных систем, включая Linux, многие модификации Unix, Microsoft Windows, Mac OS и многих других. PHP поддерживается на большинстве вебсерверов, таких, как Apache, Microsoft Internet Information Server (IIS), Microsoft Personal Web Server и других.

Для большинства серверов PHP поставляется в 2-х вариантах - в качестве модуля и в качестве CGI препроцессора.

PHP поддерживает работу с ODBC и большое количество баз данных: MySQL, MSQL, Oracle, PostgreSQL, SQLite и др.

Язык программирования PHP, особенно в связке с популярнейшей базой данных MySQL - оптимальный вариант для создания интернет-сайтов различной сложности.

История PHP начинается с 1995 года, когда Расмус Лердорф (Rasmus Lerdorf) создал простое приложение на языке Perl, анализирующее посещения пользователями его резюме на веб-сайте. Затем, когда этим приложением уже пользовались несколько человек, а число желающих получить его постоянно увеличивалось, Лердорф назвал свое творение Personal Home Page Tools версия 1 и выставил для свободного скачивания. С этого момента начался небывалый взлет популярности PHP.

Как это всегда бывает, срочно потребовались доработки и дополнения. Для их реализации Расмус создает новую версию пакета, теперь уже написанную на С. Полученный таким образом инструмент приобретает рабочее название PHP/FI (Personal Home Page / Forms Interpreter - Персональная Домашняя страница / Интерпретатор Форм), в дальнейшем он также будет известен под названием PHP 2. Эта версия уже в большей степени похожа на сегодняшний PHP. Она имела синтаксис и способ именования переменных в стиле языка Perl, автоматическую интерпретацию форм, интеграцию с базами данных (в основном с mSQL) и возможность встраивания PHP операторов в html-код страницы. При этом все работало очень быстро, так как PHP прикомпилировался к веб-серверу Apache. К 1997 году PHP использовался уже на 50,000 доменах (не более 1% всех веб-серверов).

В том же 1997 году к проекту PHP подключились Зив Сураски (Zeev Suraski) и Энди Гутманс (Andi Gutmans). Будучи студентами одного из Израильских универсистетов, они пытались использовать PHP/FI для одного из коммерческих университетских проектов. При этом им пришлось столкнуться со многими трудностями и ограничениями этой технологии. Изучая исходный код PHP 2, Зив и Энди пришли к выводу о необходимости доработки, а точнее существенной переработки PHP, особенно в плане ситаксиса языка. В течение нескольких месяцев они блестяще справились с этой задачей, тем более приятно, что данная работа была зачтена им в качестве учебной нагрузки университета.

Закончив работу Зив и Энди связались с Расмусом, который воспринял все изменения PHP "на ура". С этого момента появляется PHP Group - группа единомышленников, работающих над развитием технологии PHP. Полученный продукт совместной деятельности увидел свет в 1998 году под названием PHP 3.

При этом главной особенность PHP 3 была возможность расширения ядра, что привлекло к работе над PHP множество сторонних разработчиков, создающих специализированные модули. Их наличие дало PHP возможность работать с огромным количество баз данных, протоколов, поддерживать большое число API. К концу 1998 количество пользователей PHP перевалило за 100000, а PHP был уже установлен на не менее чем 10% серверах Интернета.

Сразу же после выхода PHP 3, Энди Гутманс и Зив Сураски начали переработку ядра PHP. В первую очередь предстояло решить проблему повышения производительности. Новый движок, названный Zend Engine (от имен создателей: Zeev и Andi), успешно справлялся с этой задачей и был реализован в 1999 году. Основной идей его использования была возможность компиляции сценария в исполняемый модуль, за счет чего производительность можно было поднять на порядок.

PHP 4, работающий на этом движке вышел в 2000 году. В дополнение к улучшению производительности, PHP 4 имел новые возможности по поддержке сессий, буферизацию вывода, безопасные способы обработки вводимой пользователем информации и новые языковые конструкции. С выходом 4 версии PHP стал использоваться уже на более чем 20% доменов Интернета.

За время с 2000 по 2004 год продолжались активные работы по улучшению 4 версии, но почти сразу PHP Group приступила к продумыванию возможностей новой версии. В первую очередь было решено усилить объектные возможности языка, что позволяло использовать его для реализации достаточно крупных проектов. Работы по созданию версии 5 велись продолжительное время, в них принимало участие рекордное количество специалистов, из которых хотелось бы особо отметить Стерлинга Хьюза (Sterling Hughes) и Маркуса Бергера (Marcus Boerger) [9].

В июле 2004 года, выходит официальный релиз PHP 5. В первую очередь, переработке подвергся весь механизм работы с объектами. И если в предыдущих версиях объектно-ориентированное программирование на PHP было возможно в минимальной степени, из-за чего и использовалось на практике не часто, то PHP 5 обладает великолепным потенциалом реализации объектного программирования. Кроме этого, PHP обогатился рядом ценных расширений для работы с XML, различными источниками данных, генерации графики и пр [10].

Все основные библиотеки для работы с XML, которые имелись в PHP 4, были подвергнуты серьезной переработке. Такие популярные расширения, как SAX, DOM и XSLT, теперь используют инструмент libxml2, что делает их еще более эффективными. В PHP 5 также включены два новых расширения - SimpleXML и SOAP.

SimpleXML позволяет значительно упростить работу с XML-данными, представляя содержимое XML-документа в виде PHP-объекта. Никогда еще работа с XML в PHP не велась так просто.

Расширение SOAP позволяет строить на PHP сценарии, обменивающиеся информацией с другими приложениями при помощи XML-сообщений поверх существующих веб-протоколов, например HTTP. Появляется возможность интегрировать PHP приложения с популярнейшими на сегодняшний день веб-сервисами. Расширение SOAP для PHP 5 предоставляет разработчикам средство для достаточно быстрого создания эффективных SOAP-клиентов и SOAP-серверов.

Новое расширение PHP 5 MySQLi (MySQL Improved) предназначено для работы с MySQL-сервером версий 4.1.2 и выше, реализуя не только процедурный, но и объектно-ориентированный интерфейс к MySQL. Дополнительные возможности этого модуля включают - SSL, контроль транзакций, поддержка репликации и пр.

Расширение SQLite позволяет строить приложения, хранящие данные в обычных файлах, с возможностью использования к ним интерфейса SQL. Главное преимущество SQLite - исключительная простота использования. SQLite наряду с процедурными имеет также мощные объектно-ориентированные возможности для работы с данными. Другие отличительные особенности SQLilte - высокая скорость, отсутствие сложных механизмов администрирования, легкая переносимость и пр. Многие эксперты прогнозируют большую популярность данного расширения PHP.

Другие новые расширени PHP 5 включают:

Tidy - для анализа и исправления HTML-документов;

Perl - использование Perl-сценариев непосредственно из PHP-кода;

SPL (Standard PHP Library) - расширение ZE2, определяющее стандартный набор интерфейсов и классов;

PDO (PHP Data Objects) - предоставляет универсальный интерфейс доступа к данным из PHP;

PIMP - новая библиотека для работы с графикой, пришедшая на замену модуля GD.

Среди других крайне полезных добавлений в PHP 5 следует отметить новую схему обработки исключений. Конструкция try/catch/throw позволит весь код обработки ошибок локализовать в одном месте сценария.

Кроме этого, в PHP 5:

используется новый более быстрый диспетчер памяти

PHP 5 дополнен свойствами, необходимыми для чёткой реализации структуры PEAR и связанной с ним функциональности

добавлено множество новых функций для работы с массивами, потоками, файлами, строками и пр.

В PHP, в отличие от многих других языков программирования, присутствует так называемый слабый контроль типов. То есть тип переменной можно не объявлять, по ходу программы она может содержать самые разные значения, сначала, например, содержать число (integer), затем туда можно записать строку (string) или массив (array). При сравнении двух переменных при помощи оператора сравнения "==" PHP преобразует переменные согласно приведенному ниже алгоритму и затем проводит сравнение (Таблица 2.1). Так, в случае, если вы сравниваете целое со строкой, строка будет преобразована к числу. В случае, если вы сравниваете две числовые строки, они сравниваются как целые числа. Это удобно, но не всегда. При таком сравнении, к примеру, ноль нельзя отличить от FALSE. А ведь нулевой номер имеют первые элементы массивов и строк. Поэтому, в PHP есть оператор идентичности "===", который сравнивает переменные с учетом их типов (Таблица 2.2).

Таблица 2.1

Гибкое сравнение с помощью "=="

TRUE

FALSE

1

0

-1

"1"

"0"

"-1"

NULL

array ()

"php"

TRUE

TRUE

FALSE

TRUE

FALSE

TRUE

TRUE

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

TRUE

TRUE

FALSE

1

TRUE

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

0

FALSE

TRUE

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

TRUE

FALSE

TRUE

-1

TRUE

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

"1"

TRUE

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

"0"

FALSE

TRUE

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

"-1"

TRUE

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

NULL

FALSE

TRUE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

TRUE

TRUE

FALSE

array ()

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

TRUE

FALSE

"php"

TRUE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

TRUE

Таблица 2.2

Жёсткое сравнение с помощью "===" (учитывает тип переменных)

TRUE

FALSE

1

0

-1

"1"

"0"

"-1"

NULL

array ()

"php"

TRUE

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

1

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

0

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

-1

FALSE

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

"1"

FALSE

FALSE

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

"0"

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

"-1"

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

FALSE

NULL

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

array ()

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

TRUE

FALSE

"php"

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

TRUE

Синтаксис PHP подобен синтаксису языка Си. Некоторые элементы, такие как ассоциативные массивы и цикл foreach, заимствованы из Perl.

Для работы программы не требуется описывать какие-либо переменные, используемые модули и т.п. Любая программа может начинаться непосредственно с оператора PHP.

Простейшая программа Hello world на PHP выглядит следующим образом:

<? php

echo 'Hello, world! ';

? >

Также возможен более короткий вариант вывода строки:

<? = 'Hello, world! '? >

Открывающий тэг вида <? = используется для сокращённой записи конструкций используемых для вывода строки.

PHP исполняет код, находящийся внутри ограничителей, таких как <? php? >. Всё, что находится вне ограничителей, выводится без изменений. В основном это используется для вставки PHP-кода в HTML-документ, например, так:

<html>

<head>

<title>Тестируем PHP</title>

</head>

<body>

<? php echo 'Hello, world! ';? >

</body>

</html>

Помимо ограничителей <? php? >, допускается использование дополнительных вариантов, таких как <?? > и <script language="php"> </script>. Кроме того, до версии 6.0 допускается использование ограничителей языка программирования ASP <% %> (конструкции <?? > и <% %> могут быть выключены в конфигурационном файле php. ini).

Имена переменных начинаются с символа $, тип переменной объявлять не нужно. Имена переменных, функций и классов чувствительны к регистру. Константы также чувствительны к регистру. Переменные обрабатываются в строках, заключённых в апострофы или двойные кавычки, и heredoc-строках (строках, созданных при помощи оператора <<<).

PHP рассматривает переход на новую строку как пробел, так же как HTML и другие языки со свободным форматом. Инструкции разделяются с помощью точки с запятой (;), за исключением некоторых случаев, после объявления конструкции if/else и циклов [11].

Переменные в функцию можно передавать как по значению, так и по ссылке (используется знак &).

PHP поддерживает три типа комментариев: в стиле языка Си (ограниченные /* */), C++ (начинающиеся с // и идущие до конца строки) и оболочки UNIX (с # до конца строки).

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

К скалярным типам данных относятся:

· целый тип (integer),

· вещественный тип данных (float, double),

· логический тип (boolean),

· строковый тип (string),

· и специальный тип NULL.

К нескалярным типам относятся:

· "ресурс" (resource),

· массив (array),

· объект (object),

К псевдотипам относятся:

· mixed один или несколько необязательных параметров,

· number число (integer либо float),

· callback (string или анонимная функция),

· void отсутствие параметров.

Диапазон целых чисел (integer) в PHP зависит от платформы (обычно, это диапазон 32-битных знаковых целых чисел, то есть, от ?2 147 483 648 до 2 147 483 647). Числа можно задавать в десятичной, восьмеричной и шестнадцатеричной системах счисления. Диапазон вещественных чисел (double) также зависит от платформы (для 32-битной архитектуры диапазон позволяет оперировать числами от ±1.7Ч10?308 до ±1.7Ч10+308).

PHP предоставляет разработчикам логический тип (boolean), способный принимать только два значения TRUE ("истина") и FALSE ("ложь"). При преобразовании в логический тип число 0, пустая строка, ноль в строке "0", NULL и пустой массив считаются равными FALSE. Все остальные значения автоматически преобразуются вTRUE.

Специальный тип NULL предназначен для переменных без определённого значения. Единственным значением данного типа является константа NULL. Тип NULL принимают неинициализированные переменные, переменные инициализированные константой NULL, а также переменные, удалённые при помощи конструкции unset ().

Ссылки на внешние ресурсы имеют тип "ресурс" (resource). Переменные данного типа, как правило, представляют собой дескриптор, позволяющий управлять внешними объектами, такими как файлы, динамические изображения, результирующие таблицы базы данных и т.п.

Массивы (array) поддерживают числовые и строковые ключи и являются гетерогенными. Массивы могут содержать значения любых типов, включая другие массивы. Порядок элементов и их ключей сохраняется. Не совсем корректно называть php-массивы массивами, на самом деле это, скорее всего, упорядоченный хеш. Возможно неожиданное поведение при использовании цикла for со счетчиком вместо foreach. Так, например, при сортировке массива с численными индексами функциями из стандартной библиотеки, сортируются и ключи тоже.

Указатель на функцию в PHP может быть представлен замыканием или псевдотипом callback. Замыкание доступно с версии 5.3 и в коде выглядит как простое определение функции, в которую явно можно утянуть значения из контекста, например:

function ($args. $argsN) use ($ctxVar,$ctxVar1) { definition; }

callback тип может быть представлен:

· строкой (интерпретируется как название функции);

· массивом где нулевой и первый элемент - строки (интерпретируется как название статической функции класса);

· массивом где нулевой элемент - объект, а первый - строка (интерпретируется как метод у объекта).

Для проверки является ли значение вызываемым следует использовать is_callable ($var)

Обращение к переменным осуществляется с помощью символа $, за которым следует имя переменной. Данная конструкция может быть применена также для создания динамических переменных и функций. Например:

$a = 'I am a'; // Запись значения в переменную $a

echo $a; // Вывод переменной $а

$b = 'a';

echo $$b; // Вывод переменной $а (дополнительный $ перед переменной $b)

echo ${'a'}; // Вывод переменной $a

function_name (); // Вызов функции function_name

$c = 'function_name';

$c (); // Вызов функции function_name,

$d = 'Class_name';

$obj = new Class_name; // Создание объекта класса Class_name

$obj = new $d (); // Создание объекта класса Class_name

$obj->b; // Обращение к полю b объекта

$obj->c (); // Вызов метода c () объекта

$obj->$b; // Обращение к полю a объекта, так как $b = 'a'

$obj->$c (); // Вызов метода function_name () объекта, так как $c = 'function_name'

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

Суперглобальными массивами (англ. Superglobal arrays) в PHP называются предопределённые массивы, имеющие глобальную область видимости без использования директивы global. Большая часть этих массивов содержит входные данные запроса пользователя (параметры GET-запроса, поля форм при посылке методом POST, куки и т.п.).

Все суперглобальные массивы, кроме $GLOBALS и $_REQUEST, имеют устаревшие аналоги с длинными именами, которые доступны вплоть до версии 5.3 х (начиная с 5.4.0 были удалены). Таким образом, обращения $_GET ['year'] и $HTTP_GET_VARS ['year'] идентичны (за исключением области видимости: массивы с "длинными" именами не являются суперглобальными) [12].

$GLOBALS

Массив всех глобальных переменных (в том числе и пользовательских).

$_SERVER (устаревший аналог - $HTTP_SERVER_VARS)

Содержит переменные окружения, которые операционная система передаёт серверу.

$_ENV (уст. $HTTP_ENV_VARS)

Текущие переменные среды (англ. Environment variables). Их набор специфичен для платформы, на которой выполняется скрипт.

$_GET (уст. $HTTP_GET_VARS)

Содержит параметры GET-запроса, переданные в URI после знака вопроса "?".

$_POST (уст. $HTTP_POST_VARS)

Ассоциативный массив значений полей HTML-формы при отправке методом POST. Индексы элементов соответствуют значению свойства name объектов (кнопки, формы, радио-кнопки, флажки и т.д.) HTML-формы.

$_FILES (уст. $HTTP_POST_FILES)

Ассоциативный массив со сведениями об отправленных методом POST файлах. Каждый элемент имеет индекс, идентичный значению атрибута "name" в форме, и, в свою очередь, также является массивом со следующими элементами:

· ['name'] - исходное имя файла на компьютере пользователя.

· ['type'] - указанный агентом пользователя MIME-тип файла. PHP не проверяет его, и поэтому нет никаких гарантий, что указанный тип соответствует действительности.

· ['size'] - размер файла в байтах.

· ['tmp_name'] - полный путь к файлу во временной папке. Файл необходимо переместить оттуда функцией move_uploaded_file. Загруженные файлы из временной папки PHP удаляет самостоятельно.

· ['error'] - код ошибки. Если файл удачно загрузился, то этот элемент будет равен 0 (UPLOAD_ERR_OK).

$_COOKIE (уст. $HTTP_COOKIE_VARS)

Ассоциативный массив с переданными агентом пользователя значениями куки.

$_REQUEST

Содержит элементы из массивов $_GET, $_POST, $_COOKIE. С версии PHP 4.1 включает $_FILES.

$_SESSION (уст. $HTTP_SESSION_VARS)

Содержит данные сессии.

PHP поддерживает широкие объектно-ориентированные возможности, полная поддержка которых была введена в пятой версии языка.

Класс в PHP объявляется с помощью ключевого слова class. Методы и поля класса могут быть общедоступными (public, по умолчанию), защищёнными (protected) и скрытыми (private). PHP поддерживает все три основных механизма ООП - инкапсуляцию, полиморфизм и наследование (родительский класс указывается с помощью ключевого слова extends после имени класса). Поддерживаются интерфейсы (ставятся в соответствие с помощью implements). Разрешается объявление финальных, абстрактных методов и классов. Множественное наследование классов не поддерживается, однако класс может реализовывать несколько интерфейсов. Для обращения к методам родительского класса используется ключевое слово parent.

Начиная с версии 5.4.0 множественное наследование может быть реализовано с помощью механизма особенностей (англ. trait). Особенности похожи на примеси (англ. mixins), за исключением того что для них нельзя напрямую создать экземпляр. Повторное использование кода заключено в использовании кода особенности в нескольких классах. Допускается использовать в одном классе несколько особенностей. Механизм особенностей имеет средства разрешения конфликтов имён. При запуске программы код особенности будет "вкомпилирован" в код содержащего его класса.

Классы в PHP имеют ряд специальных методов (англ. magic methods), начинающихся с двух символов подчёркивания. Особо стоит отметить конструктор (__construct (), в версиях до 5.0 конструктором служил метод, одноимённый с классом) и деструктор (__destruct ()), а также методы чтения (__get ()) и записи (__set ()), свёртывания (__sleep ()) и развёртывания (__wake ()), клонирования (__clone ()) и др. Эти методы являются достаточно гибким инструментом: переопределяя их, можно добиться существенного изменения поведения объекта [13].

Экземпляры класса создаются с помощью ключевого слова new, обращение к полям и методам объекта производится с использованием оператора - >. Для доступа к членам класса из его методов используется переменная $this.

class C1 extends C2 implements I1, I2

{

private $a;

protected $b;

function __construct ($a, $b)

{

parent:: __construct ($a, $b);

$this->a = $a;

$this->b = $b;

}

public function plus ()

{

return $this->a + $this->b;

}

/*.... */

}

$d = new C1 (1,2);

echo $d->plus (); // 3

Начиная с пятой версии PHP, объекты передаются по ссылке:

class a

{

public $color = 'red';

}

$a = new a ();

echo $a - > color; // red

$b = $a;

$b - > color = 'blue';

echo $a - > color; // blue

"Paamayim Nekudotayim" или просто "двойное двоеточие". Используя эту лексему, программист может обращаться к константам, статическим или перегруженным свойствам или методам класса. При обращении к этим элементам извне класса, программист должен использовать имя этого класса. "Paamayim Nekudotayim" на первый взгляд может показаться странным словосочетанием для обозначения двойного двоеточия. Однако, во время создания Zend Engine версии 0.5 (который входил в PHP3), Andi и Zeev выбрали именно это обозначение. "Paamayim Nekudotayim" действительно значит "двойное двоеточие" на иврите. Это обозначение не менялось ни разу в течение всего времени разработки PHP.

<? php

class MyClass {

const CONST_VALUE = 'Значение константы';

}

// Использование:: вне объявления класса

echo MyClass:: CONST_VALUE;

? >

2.4.3 Язык программирования JavaScript

JavaScript - прототипно-ориентированный сценарный язык программирования. Является диалектом языка ECMAScript.

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

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

На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке.

Название "JavaScript" является зарегистрированным товарным знаком компании Oracle Corporation.

JavaScript является объектно-ориентированным языком, но используемое в языке прототипирование обуславливает отличия в работе с объектами по сравнению с традиционными класс-ориентированными языками. Кроме того, JavaScript имеет ряд свойств, присущих функциональным языкам - функции как объекты первого класса, объекты как списки, карринг, анонимные функции, замыкания - что придаёт языку дополнительную гибкость.

Несмотря на схожий с Си синтаксис, JavaScript по сравнению с языком Си имеет коренные отличия:

· объекты, с возможностью интроспекции;

· функции как объекты первого класса;

· автоматическое приведение типов;

· автоматическая сборка мусора;

· анонимные функции.

В языке отсутствуют такие полезные вещи, как:

· модульная система: JavaScript не предоставляет возможности управлять зависимостями и изоляцией областей видимости;

· стандартная библиотека: в частности, отсутствует интерфейс программирования приложений по работе с файловой системой, управлению потоками ввода/вывода, базовых типов для бинарных данных;

· стандартные интерфейсы к веб-серверам и базам данных;

· система управления пакетами, которая бы отслеживала зависимости и автоматически устанавливала их.

Семантика и синтаксис.

Синтаксис языка JavaScript во многом напоминает синтаксис Си и Java, семантически же язык гораздо ближе к Self, Smalltalk или даже Лиспу.

В JavaScript:

· все идентификаторы регистрозависимы,

· в названиях переменных можно использовать буквы, подчёркивание, символ доллара, арабские цифры,

· названия переменных не могут начинаться с цифры,

· для оформления однострочных комментариев используются //, многострочные и внутристрочные комментарии начинаются с /* и заканчиваются */.

Структура языка.

Структурно JavaScript можно представить в виде объединения трёх чётко различимых друг от друга частей:

· ядро (ECMAScript),

· объектная модель браузера (Browser Object Model или BOM (de)),

· объектная модель документа (Document Object Model или DOM).

Если рассматривать JavaScript в отличных от браузера окружениях, то объектная модель браузера и объектная модель документа могут не поддерживаться.

Объектную модель документа иногда рассматривают как отдельную от JavaScript сущность, что согласуется с определением DOM как независимого от языка интерфейса документа. В противоположность этому ряд авторов находят BOM и DOM тесно взаимосвязанными.

Взаимодействие.

В некоторых языках программирования существуют средства поддержки взаимодействия с JavaScript-кодом.

· Для PHP имеется пакет HTML_Javascript, предоставляющий интерфейс создания простых JavaScript-программ.

· Соответствующий пакет для TCL называется:: javascript. Он предоставляет команды генерации кода HTML и JavaScript.

· Пакет для Perl Data:: JavaScript позволяет переносить структуры данных Perl в JavaScript-код.

Поддержка браузерами.

На сегодняшний день поддержку JavaScript обеспечивают современные версии всех наиболее часто используемых браузеров. В Internet Explorer, Mozilla Firefox, Safari, Google Chrome, Opera имеется полная поддержка третьей редакции ECMA-262. При этом в Mozilla Firefox предпринята попытка осуществления поддержки четвёртой редакции спецификации, а первым браузером, в котором появилась неполная поддержка спецификации 3.1, явился Internet Explorer 8.

Допущенные разработчиками популярных браузеров ошибки в реализации спецификации, как правило, незначительны. По состоянию на ноябрь 2009 года объектная модель документа имеет более ограниченную поддержку.

По мнению создателя языка, поддержка в Internet Explorer компанией Microsoft одного из существующих и применяющихся в других браузерах быстрых движков JavaScript способно привести к появлению приложений, работающих с трёхмерной графикой, написанных на JavaScript 3D-игр, использованию JavaScript в задачах, в которых ранее применялась технология Adobe Flash.

При генерации страниц в Web возникает дилемма, связанная с архитектурой "клиент-сервер". Страницы можно генерировать как на стороне клиента, так и на стороне сервера. В 1995 году специалисты компании Netscape создали механизм управления страницами на клиентской стороне, разработав язык программирования JavaScript.

Таким образом, JavaScript - это язык управления сценариями просмотра гипертекстовых страниц Web на стороне клиента.

Основная идея JavaScript состоит в возможности изменения значений атрибутов HTML-контейнеров и свойств среды отображения в процессе просмотра HTML - страницы пользователем. При этом перезагрузки страницы не происходит [14].

На практике это выражается в том, что можно, например, изменить цвет фона страницы или интегрированную в документ картинку, открыть новое окно или выдать предупреждение.

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

· свойства;

· методы;

· события.

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

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

Многие HTML-контейнеры имеют атрибуты. Например, контейнер якоря <A. >. </A> имеет атрибут HREF, который превращает его в гипертекстовую ссылку:

<A HREF=intuit. htm>intuit</A>

Если рассматривать контейнер якоря <A. >. </A> как объект, то атрибут HREF будет задавать свойство объекта "якорь". Программист может изменить значение атрибута и, следовательно, свойство объекта:

document. links [0]. href="intuit. htm";

Не у всех атрибутов можно изменять значения. Например, высота и ширина графической картинки определяются по первой загруженной в момент отображения страницы картинке. Все последующие картинки, которые заменяют начальную, масштабируются до нее. Справедливости ради следует заметить, что в Microsoft Internet Explorer размер картинки может меняться.

Для общности картины свойствами в JavaScript наделены объекты, которые не имеют аналогов в HTML-разметке. Например, среда исполнения, называемая объектом Navigator, или окно браузера, которое является вообще самым старшим объектом JavaScript.

В терминологии JavaScript методы объекта определяют функции изменения его свойств. Например, с объектом "документ" связаны методы open (), write (), close ().

Эти методы позволяют сгенерировать или изменить содержание документа.

Например:

function hello ()

{ id=window. open ("","example","width=400, height=150");

id. focus (); id. document. open ();

id. document. write ("<H1>Привет! </H1>");

id. document. write ("<HR><FORM>");

id. document. write ("<INPUT TYPE=button VALUE='Закрыть окно' ");

id. document. write ("onClick='window. opener. focus (); window. close (); '>");

id. document. close ();

}

В этом примере метод open () открывает поток записи в документ, метод write () осуществляет эту запись, метод close () закрывает поток записи в документ. Все происходит так же, как и при записи в обычный файл.

Кроме методов и свойств объекты характеризуются событиями. Собственно, суть программирования на JavaScript заключается в написании обработчиков этих событий. Например, с объектом типа button (контейнер INPUT типа button - "Кнопка") может происходить событие click, т.е. пользователь может нажать на кнопку. Для этого атрибуты контейнера INPUT расширены атрибутом обработки события click - onClick. В качестве значения этого атрибута указывается программа обработки события, которую должен написать на JavaScript автор HTML - документа:

<INPUT TYPE=button VALUE="Нажать" onClick="window. alert ('Пожалуйста, нажмите еще раз'); ">

Обработчики событий указываются в тех контейнерах, с которыми эти события связаны. Например, контейнер BODY определяет свойства всего документа, поэтому обработчик события завершения загрузки всего документа указывается в этом контейнере как значение атрибута onLoad.

Примечание. Строго говоря, каждый браузер, будь то Internet Explorer, Netscape Navigator или Opera, имеет свою объектную модель.

Объектные модели разных браузеров (и даже разные версии одного) отличаются друг от друга, но имеют принципиально одинаковую структуру. Поэтому нет смысла останавливаться на каждой из них по отдельности.

Схема URL (Uniform Resource Locator) - это один из основных элементов Web - технологии. Каждый информационный ресурс в Web имеет свой уникальный URL.

URL указывают в атрибуте HREF контейнера A, в атрибуте SRC контейнера IMG, в атрибуте ACTION контейнера FORM и т.п. Все URL подразделяются на схемы доступа, которые зависят от протокола доступа к ресурсу, например, для доступа к FTP-архиву применяется схема ftp, для доступа к Gopher-архиву - схема gopher, для отправки электронной почты - схема smtp. Тип схемы определяется по первому компоненту URL: http://intuit.ru/directory/page.html

В данном случае URL начинается с http - это и есть определение схемы доступа (схема http).

Основной задачей языка программирования гипертекстовой системы является программирование гипертекстовых переходов. Это означает, что при выборе той или иной гипертекстовой ссылки вызывается программа реализации гипертекстового перехода. В Web-технологии стандартной программой является программа загрузки страницы. JavaScript позволяет поменять стандартную программу на программу пользователя. Для того чтобы отличить стандартный переход по протоколу HTTP от перехода, программируемого на JavaScript, разработчики языка ввели новую схему URL - JavaScript:

<A HREF="JavaScript: JavaScript_код">. </A>

<IMG SRC="JavaScript: JavaScript_код">

В данном случае текст "JavaScript_код" обозначает программы-обработчики на JavaScript, которые вызываются при выборе гипертекстовой ссылки в первом случае и при загрузке картинки - во втором.

Например, при нажатии на гипертекстовую ссылку "Внимание!!!" можно получить окно предупреждения:

<A HREF="JavaScript: alert ('Внимание!!! '); "> Внимание!!! </A>

А при нажатии на кнопку типа submit в форме можно заполнить текстовое поле этой же формы:

<FORM NAME=f METHOD=post

ACTION="JavaScript: window. document. f. i. VALUE='Нажали кнопку

Click'; void (0); ">

<INPUT TYPE=submit VALUE=Click>

</FORM>

В URL можно размещать сложные программы и вызовы функций. Следует только помнить, что схема JavaScript работает не во всех браузерах, а только в версиях Netscape Navigator и Internet Explorer, начиная с четвертой.

Такие программы, как обработчики событий (handler), указываются в атрибутах контейнеров, с которыми эти события связаны. Например, при нажатии на кнопку происходит событие click:

<FORM><INPUT TYPE=button VALUE="Кнопка" onClick="window. alert ('intuit'); "></FORM>

Контейнер SCRIPT - это развитие подстановок до возможности генерации текста документа JavaScript-кодом. В этом смысле применение SCRIPT аналогично Server Side Includes, т.е. генерации страниц документов на стороне сервера.

При разборе документа HTML-парсер передает управление интерпретатору после того, как встретит тег начала контейнера SCRIPT. Интерпретатор получает на исполнение весь фрагмент кода внутри контейнера SCRIPT и возвращает управление HTML-парсеру для обработки текста страницы после тега конца контейнера SCRIPT.

Контейнер SCRIPT выполняет две основные функции:

1. размещение кода внутри HTML-документа;

2. условная генерация HTML-разметки на стороне браузера.

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

Объектно-ориентированный язык программирования предполагает наличие иерархии классов объектов. В JavaScript такая иерархия начинается с класса объектов Window, т.е. каждый объект приписан к тому или иному окну. Для обращения к любому объекту или его свойству указывают полное или частичное имя этого объекта или свойства объекта, начиная с имени объекта старшего в иерархии, в который входит данный объект:

Вообще говоря, JavaScript не является классическим объектным языком (его еще называют облегченным объектным языком). В нем нет наследования и полиморфизма. Программист может определить собственный класс объектов через оператор function, но чаще пользуется стандартными объектами, их конструкторами и вообще не применяет деструкторы классов. Это объясняется тем, что область действия JavaScript-программы обычно не распространяется за пределы текущего окна.

Иногда у разных объектов JavaScript бывают определены свойства с одинаковыми именами. В этом случае нужно четко указывать, свойство какого объекта программист хочет использовать. Например, Window и Document имеют свойство location. Только для Window это объект класса Location, а для Document - строковый литерал, который принимает в качестве значения URL загруженного документа.

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

Например, для всех объектов по умолчанию определен метод преобразования в строку символов: toString (). В примере с location, если обратиться к window. location в строковом контексте, будет выполнено преобразование по умолчанию, и программист этого не заметит:

<SCRIPT>

document. write (window. location);

document. write ("<BR>");

document. write (document. location);

</SCRIPT>

Однако разница все-таки есть, и довольно существенная. В том же примере

получим длины строковых констант:

<SCRIPT>

w=toString (window. location);

d=toString (document. location);

h=window. location. href;

document. write (w. length);

document. write (d. length);

document. write (h. length);

</SCRIPT>

Результат исполнения получите сами.

Как легко убедиться, при обращении к свойству объекта типа URL, а свойство location как раз является объектом данного типа, длина строки символов после преобразования будет другой.

Класс объектов Window - это самый старший класс в иерархии объектов JavaScript. К нему относятся объект Window и объект Frame.

Объект Window ассоциируется с окном программы-браузера, а объект Frame - с окнами внутри окна браузера, которые порождаются последним при использовании автором HTML-страниц контейнеров FRAMESET и FRAME.

В JavaScript строка является любым фрагментом текста. Как и многие другие объекты в JavaScript, строки можно определять несколькими различными способами:

var myString = 'Hello, World! ';

var myString = new String ('Hello, World! ');

Первый метод используется наиболее часто. Второй метод применяется редко и только для гарантии, что получаемый объект является строкой. Например:

var n = 5;

var s = new String (n*20);

В этом примере s будет строкой " 100”. Если просто задать s как n*20, то s будет содержать число 100. Однако поскольку JavaScript является слабо типизированным языком, то эти различия не будут существенно влиять на то, что вы делаете.

Строковые объекты (var n = new String ('Hello World')) технически являются в Internet Explorer более медленными при некоторых операциях, чем строковые литералы (var n = 'Hello World'). Однако это поведение совершенно противоположно в других браузерах. В любом браузере различие редко бывает настолько заметно, чтобы об этом беспокоиться.

Единственное важное различие состоит в том, что eval () не работает со строковыми объектами.

Что, если в строке имеется апостроф? Следующий код работать не будет:

var n = 'The dog took it's bone outside';

Легко видеть, что апостроф в "it's " заканчивает строку. Поэтому мы получаем строку "The dog took it", за которой следует " s bone outside'". Это продолжение само по себе не является допустимым кодом JavaScript (или правильным грамматически, если на то пошло), поэтому будет получена ошибка [15].

Здесь можно сделать две вещи. Так как строка определяется с помощью одиночных или двойных кавычек, то можно задать строку с помощью двойных кавычек. Другая возможность состоит в экранировании апострофа. Чтобы экранировать символ, необходимо просто подставить перед ним символ \. Символ \ в этом контексте сообщает JavaScript, что следующий символ необходимо воспринимать в точности так, как он есть, в номинальном значении, а не как специальный символ.

var n = "The dog took it's bone outside";

var n = 'The dog took it\'s bone outside';

Если в строке должен присутствовать символ \, то он экранируется таким же образом: '\\'.

В предыдущей лекции мы встречались с функциями indexOf и lastIndexOf.

Напомним, что они делают. Функция indexOf возвращает число, определяющее первую позицию одной строки в другой. Если разыскиваемая строка не существует, то indexOf возвращает - 1. Функция lastIndexOf идентична indexOf, но возвращает не первую позицию вхождения строки, а последнюю.

Тот факт, что функции indexOf и lastIndexOf возвращают - 1, если строка не существует, является очень полезным и позволяет использовать эти функции для достаточно распространенной задачи - проверки того, что одна строка существует внутри другой.

Существует несколько других полезных функций для работы со строками.

· charAt () сообщает, какой символ находится в определенной позиции строки.

Поэтому 'Test'. charAt (1) = 'e'.

· length сообщает длину строки. 'Test'. length = 4.

· substring () выдает строку между двумя индексами. 'Test'. substring (1,2) = 'e'.

· substr () аналогична substring (), только второе число является не индексом, а длиной возвращаемой строки. Если это число указывает на позицию за пределами строки, то substr () вернет существующую часть строки.

· 'Test'. substr (1,2) = 'es';

· toLowerCase () и toUpperCase () делают то, что обозначают: преобразуют строку в нижний или верхний регистр символов соответственно.

'Test'. toUpperCase () = 'TEST';

Примеры всех приведенных выше функций:

alert ('This is a Test'. indexOf ('T')); // 0

alert ('This is a Test'. lastIndexOf ('T')); // 10

alert ('This is a Test'. charAt (5)); // i

alert ('This is a Test'. length); // 14

alert ('This is a Test'. substring (5,9)); // is a

alert ('This is a Test'. substr (5,9)); // is a Test

alert ('This is a Test'. toUpperCase ()); // THIS IS A TEST

alert ('This is a Test'. toLowerCase ()); // this is a test

Последней строковой функцией, которая будет рассмотрена, является eval (). eval () получает строку и выполняет строку, как если бы это был код JavaScript.

eval ("alert ('Hello, World! ')");

В этом примере будет выведено сообщение "Hello, World!", как если бы функция alert была написана обычным образом. Это может быть очень полезно, так как позволяет создать содержащую код строку, а затем ее выполнить.

Объект Math в JavaScript содержит функции, позволяющие сделать почти все, что можно сделать с числами помимо обычной арифметики. Math. PI, например, содержит просто число 3.141592653589793. В нем содержатся тригонометрические функции (sin, cos, tan, и т.д.), функции для округления чисел (Math. floor возвращает число, округленное с недостатком, Math. ceil возвращает число, округленное с избытком, а Math. round округляет число "нормально") и многие другие.

Двумя наиболее распространенными задачами, связанными с числами, являются преобразование числа в строку и строки в число. JavaScript является слабо типизированным языком, а это означает, что типы данных не имеют большого значения, но существуют некоторые случаи, когда надо быть уверенным, что имеется число или строка. Если надо сложить, например, 5 и число, которое вводит пользователь, то надо быть уверенным, что введено число, а не слово "Привет".

var n = parseInt ("3.14"); // 3

var n = parseFloat ("3.14") // 3.14

Функция parseInt возвращает целое значение своего аргумента. Аргументы "3.14", "3", "3.00001 " и "3.9999 " превратятся в значение 3.

Функция parseFloat, с другой стороны, возвращает также любое десятичное значение. Обе эти функции пытаются "очистить" данные перед возвращением числа. Например, parseInt ("3a") вернет значение 3.

Существует также несколько методов, которые можно использовать, когда надо преобразовать число в строку:

var n = 5;

var m = n. toString ();

var m = n+'';

var m = new String (n);

Предпочтительным методом является "n. toString ()", но необходимо отметить, что часто используется второй метод. Например, если имеется уведомление alert ('Имеется ' + apples + ' яблок'), то число apples автоматически преобразуется в строку.

Массив является по сути списком элементов. Каждый элемент массива может быть чем угодно, но обычно они связаны друг с другом. Если, например, необходимо отследить 30 студентов класса, то можно создать массив студентов:

var students = new Array ();

students [0] = 'Sam';

students [1] = 'Joe';

students [2] = 'Sue';

students [3] = 'Beth';

Как можно видеть, определить массив очень просто, так же, как и присвоить значения его элементам. Однако пример выше имеет слишком много кода для относительно небольшого результата. Нет ничего удивительного в том, что существует несколько методов для создания массива. Значительно более компактным будет следующий пример:

var students = ['Sam', 'Joe', 'Sue', 'Beth'];

Это код создает точно такой же массив, что и предыдущий пример, но, как можно видеть, он значительно более компактный и ничуть не сложнее для понимания. Скобки ([и]) в этом примере сообщают коду, что будет создан массив. Простая запись "var students = []; " является тем же самым, что и запись "var students = new Array ();".

Чтобы обратиться к любому элементу массива, необходимо знать его индекс. В первом примере можно видеть, что в скобках находятся числа (0-3). Это индексы. Если требуется узнать имя третьего студента, то надо будет написать "alert (students [2]);". Массивы в JavaScript начинают индексацию с 0, а не с 1. Поэтому первым элементом в массиве будет students [0], вторым - students [1], сотым - students [99], и т.д. Для этого не существует никакой реальной причины, просто так устроен JavaScript и многие другие языки программирования. Некоторые другие языки используют в качестве первого индекса 1.

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

var students = ['Sam', 'Joe', 'Sue', 'Beth'];

var suffixes = ['1st', '2nd', '3rd', '4th'];

for (var i=0; i<students. length; i++) {

alert (suffixes [i] +' студент - '+students [i]);

}

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

Прежде всего имеется массив столбцов. Каждый столбец будет в свою очередь содержать в себе массив строк. Этот массив создается точно таким же образом, как и массив students:

var spreadsheet = [

['A1', 'B1', 'C1', 'D1'],

['A2', 'B2', 'C2', 'D2'],

['A3', 'B3', 'C3', 'D3'],

['A4', 'B4', 'C4', 'D4']

];

Переносы строк в JavaScript обычно не имеют значения. В этом примере переносы строк используются для придания коду большей наглядности и не влияют на код никаким образом. [16]

2.4.4 Таблица стилей CSS

CSS (англ. Cascading Style Sheets - каскадные таблицы стилей) - формальный язык описания внешнего вида документа, написанного с использованием языка разметки.

Преимущественно используется как средство описания, оформления внешнего вида веб-страниц, написанных с помощью языков разметки HTML и XHTML, но может также применяться к любым XML-документам, например, к SVG или XUL.

CSS используется создателями веб-страниц для задания цветов, шрифтов, расположения отдельных блоков и других аспектов представления внешнего вида этих веб-страниц. Основной целью разработки CSS являлось разделение описания логической структуры веб-страницы (которое производится с помощью HTML или других языков разметки) от описания внешнего вида этой веб-страницы (которое теперь производится с помощью формального языка CSS). Такое разделение может увеличить доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом. Кроме того, CSS позволяет представлять один и тот же документ в различных стилях или методах вывода, таких как экранное представление, печатное представление, чтение голосом (специальным голосовым браузером или программой чтения с экрана), или при выводе устройствами, использующими шрифт Брайля [17].


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.