
- •Минск, бгу,
- •Содержание.
- •Глава1. Компьютерные сети и протоколы…………………………..15
- •Введение в Интернет Коротко об истории Интернет
- •Как работает Интернет?
- •Система адресации
- •Способы подключения к сети
- •Сервисы Интернет
- •Электронная почта
- •Передача файлов по ftp
- •Всемирная паутина www
- •Задания по теме “Введение в Интернет”
- •Глава 1. Компьютерные сети и протоколы
- •Локальные сети
- •Распределенные и глобальные сети
- •Сеть vpn
- •Адресация в локальных сетях
- •Адресация в глобальных сетях и в Интернет
- •Понятие и краткое описание протоколов
- •Соотношение между tcp/ip и osi/iso
- •Межсетевой протокол iPv4
- •Транспортный протокол tcp
- •Протокол дэйтаграмм udp
- •Протоколы arp и rarp
- •Протоколы сетевого уровня
- •Протоколы электронной почты
- •Протоколы smtp и pop3
- •Протокол imap4
- •Спецификация mime
- •Протокол ftp
- •Http – Протокол передачи гипертекстов
- •Клиентский запрос http
- •Ответ сервера
- •Развитие прикладных протоколов: soap, rest, rpc
- •Безопасность в сети
- •Протокол ssl
- •Установление подлинности участников
- •Проблемы с кодировкой и Unicode
- •Задания по теме «Протоколы Интернет»
- •Глава 2. Проектирование и разработка сайтов
- •Виды сайтов
- •Этапы проектирования и разработки сайта
- •Модели проектирования и управление проектами
- •Итерационная (спиральная) модель
- •Программные средства управления проектами
- •Логическое проектирование дизайна сайта
- •Главная страница сайта
- •Внутренние страницы сайта
- •Оценки качества Веб – сайтов
- •Глава 3. Краткий обзор основных технологий разработки Веб приложений
- •Язык разметки гипертекста xml
- •Синтаксис xml
- •Объявление xml
- •Конструкции языка
- •Правильно построенные и действительные документы xml
- •Отображение xml документа
- •Словари xml
- •Вставка флэш в страницу
- •Язык ActionScript
- •Видео-аудио проигрыватели
- •Технология «клиент-сервер»
- •Язык Java на клиентской и серверной странице
- •Базы данных и язык sql
- •Нормализация модели данных
- •Язык sql
- •Команды определения структуры данных
- •Команды манипулирования данными
- •Команды управления транзакциями
- •Команды управления доступом
- •Извлечение данных, команда select
- •Секция where
- •Групповые функции
- •Секция having
- •Изменение данных
- •Команда insert
- •Язык разметки гипертекста html
- •Формы html
- •Новые элементы форм html5
- •Новый тип input – range служит для ввода значения из диапазона
- •Теги div и span
- •Метатеги
- •Новые возможности html5
- •Поддержка аудио
- •Поддержка видео
- •Атрибут Controls
- •Валидация документов
- •Каскадные таблицы стилей css
- •Способы включения каскадных таблиц стилей
- •Теги div , span и link
- •Свойства шрифтов (фонтов).
- •Заголовок1 Заголовок2 Заголовок3
- •Стили текста.
- •Цвет и фон.
- •Свойства списков
- •Свойства таблиц
- •Псевдоклассы
- •Псевдостили текста
- •Псевдоэлементы
- •Форматирование псевдоклассов и псевдоэлементов
- •Различные свойства
- •Представление документа в виде блоков
- •Отступы, поля, позиционирование
- •Границы элементов
- •Визуальное форматирование
- •Визуальные эффекты
- •Новое в css3
- •Глава 5. Язык JavaScript Введение
- •Включение скриптов JavaScript в html-код
- •Создание простых сценариев
- •Комментарии. Скрытие сценариев от браузеров
- •Отладка скриптов. Ввод и вывод данных
- •Описание языка Типы данных
- •Преобразование типа
- •Булев тип
- •Переменные типа Undefined и Null
- •Массивы
- •Операторы и выражения
- •Оператор присваивания
- •Арифметические операторы
- •Операторы сравнения
- •Функции пользователя
- •Передача параметров по значению и по ссылке
- •Глобальные и локальные переменные
- •Модель событий
- •Ключевое слово this
- •Перехват события.
- •Методы addEventListener, removeEventListener, attachEvent.
- •Исключения: throw/catch/finally
- •Объектная модель
- •Пользовательские объекты
- •Прототипы
- •Встроенные объекты String, Array, Date, Math Объект String
- •Объект Array
- •Объект Date (Дата)
- •Методы объекта Date
- •Коллекции
- •Свойства элемента innerHtml и outerHtml
- •Навигация по дереву документа
- •Создание новых узлов
- •Удаление и замена узлов в документе
- •Объект window
- •Свойства окна, передаваемые методу open()
- •Методы объекта window
- •Свойства и методы объекта navigator
- •Свойства и методы объекта history
- •Свойства и методы объекта location
- •Объект layer
- •Свойства объекта layer
- •Методы объекта layer
- •Использование каскадных таблиц стилей и объекта style
- •Модель ajax:
- •Класс xmlHttpRequest
- •Свойства класса
- •Методы класса
- •Создание экземпляра объекта
- •Использование dom
- •Объект FormData
- •Работа с cookie
- •Синтаксис http заголовка для поля Cookie
- •Способы задания значений cookie
- •Примеры на JavaScript
- •Глава 6. Язык серверных скриптов php
- •Инструменты для разработки
- •Как php работает
- •Описание языка Типы данных
- •Массивы и инициализация массивов
- •Операции и выражения
- •Операции сравнения
- •Логические операции
- •Строковые операции
- •Операторы управления
- •Функции
- •Рекурсивные функции
- •Аргументы функции
- •Область действия и время жизни переменных
- •Изменяемые (динамические) переменные
- •Внешние библиотечные функции
- •Функции для работы с массивами
- •Функции для работы со строками.
- •Функции форматных преобразований строк
- •Преобразование строк и файлов к формату html и наоборот
- •Преобразование html в простой текст
- •Преобразование строки к верхнему и нижнему регистру
- •Установка локальных настроек
- •Регулярные выражения
- •Perl-совместимые функции для работы с регулярными выражениями
- •Функции даты и времени
- •Математические функции
- •Объектно-ориентированное программирование в php Основные понятия ооп
- •Классы и Объекты
- •Конструкторы и деструкторы
- •Наследование классов и интерфейсов
- •Магические методы
- •Обработка ошибок
- •Ошибки php и журнал error_reporting
- •Чтение и запись бинарных файлов
- •Работа с каталогами в рнр
- •MySql – сервер: бд1; бд2; бд3; бд4;
- •Язык запросов sql
- •Операция соединения.
- •Команды sql для создания баз данных и таблиц
- •Выборка данных из таблиц бд
- •Работа с MySql (сохранение данных в базе данных).
- •Работа с MySql занесение и получение данных из базы данных
- •Организации работы с данными
- •Передача данных от клиента к серверу и обратно. Протокол http
- •Клиентские методы http
- •Обработка html-форм
- •Передача переменных из формы в скрипт.
- •Передача значений переменных по методу get
- •Передача данных из формы на сервер по методу get
- •Передача данных из формы на сервер по методу post
- •Php и различные формы
- •Обработка форм
- •Более сложные переменные формы
- •Глава 7. Лабораторные работы Лабораторная работа 1 (4 часа). Инструменты и средства создания простых сайтов
- •Лабораторная работа 3 (4часа). Применение каскадных таблиц стилей css
- •Трехколоночный контейнерный макет сайта
- •Лабораторная работа 4. Применение каскадных таблиц стилей css
- •Некоторые подсказки по синтаксису css:
- •1. Свойства шрифтов.
- •2. Свойства текста.
- •3. Свойства цвета и фона.
- •4. Свойства рамки.
- •5. Свойства списков.
- •6. Свойства изображений.
- •Форматирование блока
- •Лабораторная работа 5 (4 часа). Динамика и JavaScript на Веб –странице.
- •Ответить на следующие вопросы
- •Пример вывода даты и времени.
- •Пример вывода строки в стиле печатной машинки
- •Дополнительные задачи и упражнения по JavaScript
- •Лабораторная работа 6 по JavaScript (4 часа).
- •Проверка правильности заполнения формы на сайте
- •Методы объекта window
- •Методы focus() и blur()
- •Лабораторная работа 7. Php Задание 1. Массивы и строки Выполнить одно из перечисленных ниже упражнений
- •Задание 2. Функции
- •Задание 4. Работа с базами данных Выполнить одно из перечисленных ниже упражнений
- •Задание 5. Создание web-объектов Список заданий
- •Приложение 1. Курсовые работы Курсовая работа 1. Создание клиентских приложений
- •Курсовая работа №2. Сайты клиент-сервер
- •Каталог товаров
- •Система вопрос/ответ
- •Курсовая работа №3. Технологии разработки Веб – приложений Проекты сайтов
- •Перечень заданий
- •Приложение 2. Быстрая разработка Веб-приложений и cms
- •Начало работы с сайтом
- •Установка нового модуля
- •Создание шаблона
- •Создание индивидуальных шаблонов
- •Движок шаблонирования xTemplate
- •Создание нового шаблона
- •Удаление блока с формой входа на сайт
- •Включение блока для отображение популярных статей
- •Удаление ссылки "Далее" в отображение статьи
- •Drupal: практические примеры
- •Как заставить Drupal работать быстрее
- •Литература
Классы и Объекты
Модель объектов PHP больше похожа на модель объектов Java, чем на модель C++. Класс представляет объединение переменных и функций-методов, работающих с этими переменными. Переменные класса определяются с ключевым словом var как в PHP4 или со спецификатором доступа private, public или protected как в PHP5. Методы определяются в классе с ключевым словом function и спецификатором доступа. Рассмотрим пример:
<?php
class Mycart
{//var $items=0; в PHP4
private $items=0; //переменные класса в PHP5
public function add ($n) // Добавить $n артикулов
{
$this->items += $n;
}
public function remove ( $n) // Изъять $n артикулов
{
if ($this->items > $n) {
$this->items -= $n;
return true; }
else { return false; }
}
public function show()
{
echo '$items=', $this->items ;
}
}//конец класса
$instance=new Mycart();
$instance->add(5);
$instance->remove(2);
$instance->show();
echo $instance->items ;//ошибка
?>
Вывод:
$items=3
Fatal error: Cannot access private property Mycart::$items in x:\home\localhost\www\my\pr41.php on line 25 – нет доступа к private переменной items
Здесь $instance представляет ссылку на объект класса, сам объект создается операцией new. Каждый объект получает собственный числовой идентификатор (handler), который используется при обращении к объекту.
Чтобы иметь возможность доступа к переменным и функциям внутри класса, можно использовать псевдопеременную $this, которая может читаться как 'ссылка на текущий объект'.
В PHP 5 введены спецификаторы доступа public, protected и private, которые позволяют указать степень доступа к свойствам и методам класса.
К общедоступным (public) свойствам и методам можно получить доступ без каких либо ограничений. Защищенные (protected) элементы класса доступны внутри класса, в котором они объявлены, и в производных (наследуемых) от него классах.
Частные (private) элементы доступны только методам в классе, в котором они объявлены.
Если не указывать ни один из спецификаторов, то по умолчанию элемент будет иметь уровень доступа public. Такой же уровень доступа по умолчанию получают свойства, для объявления которых использовалось устаревшее и не рекомендуемое к использованию в PHP 5 ключевое слово var, а спецификатор доступа не используется. Это сделано для переемственности с PHP4.
Конструкторы и деструкторы
В PHP допустимы только константные инициализаторы для переменных класса. Для инициализации переменных класса используется функция инициализации, которая вызывается автоматически при создании объекта класса. Такая функция называется конструктором. Метод-конструктор вызывается автоматически при каждом создании объекта. В PHP4 имя этой функции совпадает с именем класса. В PHP 5 конструктором класса является метод __construct(). При уничтожении объекта вызывается специальный метод __destruct() – деструктор класса.
<?php //pr21
class MyClass {
private $property;
function _construct() {
echo "Запущен конструктор";
}
function __destruct() {
echo "Запущен деструктор";
}
function MyClass($n=1) {
echo "Запущен другой конструктор";
$this->property=$n;
}
}
$obj = new MyClass(); // Выводит "Запущен конструктор"
unset($obj); // Выводит "Запущен деструктор"
$obj1 = new MyClass(10);
?>
Запущен конструктор Запущен деструктор Запущен конструктор Запущен деструктор
Конструкторы PHP4, имена которых совпадают с именами классов, будут работать с PHP5 без изменений кода. Для совместимости с предыдущей версией PHP 5 поступает следующем образом: если при создании объекта в классе не найдется конструктора __construct(), то PHP пытается выполнить метод, имя которого совпадает с именем класса.
В приведенном выше примере конструктор не перегружается, а вызывается первый конструктор.
В случае наследования классов конструктор базового класса при создании порожденного класса неявно не вызывается. Если необходимо вызвать конструктор или деструктор базового класса из порожденного класса, это нужно сделать явно, через указатель parent.
<?php //pr22
class MyClass {
function __construct() {
echo "конструктор базового класса";
}
function __destruct() {
echo " деструктор базового класса";
}
}
class DerivedClass extends MyClass {
function __construct() {
echo "конструктор порожденного класса";
parent::__construct();
}
function __destruct() {
echo " деструктор порожденного класса";
parent::__destruct();
}
}
$obj = new DerivedClass();
unset($obj);
?>
Вывод:
конструктор порожденного класса конструктор базового класса
деструктор порожденного класса деструктор базового класса
Рассмотрим еще один пример вывода даты/времени:
<?php
class Dateclass {
var $month=array( "Январ", "Феврал", "Март", "Апрел", "Ма", "Июн", "Июл","Август","Сентябр", "Октябр", "Декабр", "Январ");
var $day=array ( "Воскресенье", "Понедельник", "Вторник","Среда", "Четверг" , "Пятница" , "Суббота");
var $dnum; var $mnum; // Переменные класса
var $daym; var $year;
function Dateclass() { //Конструктор: инициализация переменных
$this->dnum = date("w");
$this->mnum = date("n");
$this->daym = date("d");
$this->year = date("Y");
}
function show(){// метод
$dnum =$this->dnum;
$mnum = $this->mnum;
$daym =$this->daym;
$year = $this->year;
$textday =$this->day[$dnum];
$monthm =$this->month[$mnum-1];
if ($mnum==3||$mnum==8)
{ $k="а"; }
else {$k="я";}
echo "Сегодня: $textday, $daym $monthm$k $year г.";
}
}
$obj=new Dateclass();// Создание объекта
$obj->show();//Вызов метода из объекта
?>
Результат:
Сегодня: Воскресенье, 05 Апреля 2009 г.
В PHP объекты представляют объектные ссылки, передача объекта в качестве параметра функции происходит по ссылке, а не по значению. Если необходимо провести копирование объекта, то используется клонирование объекта со всеми методами, свойствами и значениями:
<?php //pr24
class MyClass{
public $property=1;
}
$obj1 = new MyClass;
$obj2=$obj1;//ссылка на тот же объект
echo $obj1->property; // Выводит 1
$obj2->property = 2;
echo $obj1->property; // Выводит 2
$obj3 = clone $obj1;//создание нового объекта
echo $obj3->property; // Выводит 2
$obj3->property = 3;
echo $obj1->property; // Выводит 2
?>
Для копирования объекта используется ключевое слово clone, которое вызывает метод __clone() и к которому нельзя обратиться непосредственно. Метод __clone() необязательно описывать в классе, однако его перегрузка, позволит изменить значения свойств копируемого объекта:
<?php
class MyClass{
var $property;
function __clone() {
$this->property = 2;
}
}
$obj1 = new MyClass;
$obj1->property = 1;
$obj2 = clone $obj1;
echo $obj1->property; // Выводит 1
echo $obj2->property; // Выводит 2
?>
Метод __clone() не может принимать никакие аргументы, однако позволяет обратиться к исходному объекту через указатель $this и получаемому в результате копирования объекту через указатель $that.