Разделы презентаций


Московский технологический институт Проектирование и разработка

Содержание

Рекомендуемая литература «PHP5. Полное руководство» Джон Коггзолл. Диалектика. 2006 г. «Разработка Web-приложений с помощью PHP и MySQL» Люк Веллинг, Лаура Томсон. Вильямс. 2007 г. «AJAX и PHP. Разработка динамических

Слайды и текст этой презентации

Слайд 1Московский технологический институт Проектирование и разработка интернет-приложений № 7-8 (Объектно-ориентированное программирование на

PHP. PHP и SQLite. PHP и XML)
Кафедра: Информатики и

автоматизации
Автор: к.т.н., доцент Долин Георгий Аркадьевич
Контакты: dolin1974@gmail.com

Москва - 2016

Московский технологический институт Проектирование и разработка интернет-приложений № 7-8 (Объектно-ориентированное программирование на PHP. PHP и SQLite. PHP

Слайд 2Рекомендуемая литература
«PHP5. Полное руководство» Джон Коггзолл. Диалектика. 2006 г.
«Разработка

Web-приложений с помощью PHP и MySQL» Люк Веллинг, Лаура Томсон. Вильямс.

2007 г.
«AJAX и PHP. Разработка динамических веб-приложений» Кристиан Дари, Богдан Бринзаре, Филип Черчез-Тоза, Михай Бусика. Символ-Плюс. 2006 г.
«PHP, MySQL, XML. Программирование для Интернета» Елена Бенкен. БХВ-Петербург. 2007 г.
«Профессиональное программирование на PHP» Джордж Шлосснейгл. Вильямс. 2006 г.
Рекомендуемая литература «PHP5. Полное руководство» 	Джон Коггзолл. Диалектика. 2006 г.  «Разработка Web-приложений с помощью PHP и

Слайд 3Объектно-ориентированное программирование на PHP

Объектно-ориентированное программирование на PHP

Слайд 4ООП на PHP Определение класса
Класс – набор данных (свойств) и функций

(методов) для работы с этими данными.

определение свойств
// определение методов
}

// Инициализация класса (создание объекта)
$myObj = new MyClass();
?>
ООП на PHP Определение классаКласс – набор данных (свойств) и функций (методов) для работы с этими данными.

Слайд 5ООП на PHP Свойства класса

= “value2”;
private $property3;
}

// Доступ к свойствам класса
$myObj = new

MyClass();
$myObj->property1;

// Изменение значения свойств
$myObj->property2 = “other_value”;
?>
ООП на PHP Свойства класса

Слайд 6ООП на PHP Методы класса

// операторы
}
}

// Вызов метода
$myObj = new MyClass();
$myObj->myMethod(‘value1’,’value2’);
?>

ООП на PHP Методы класса

Слайд 7ООП на PHP Спецификаторы доступа
Спецификаторы доступа (public, protected, private) позволяют установить

различный уровень доступа к свойствам и методам класса
Public (общедоступные) –

доступ без ограничений
Protected (защищенные) – доступны внутри класса, в котором они были объявлены, а также во всех дочерних от него классах
Private (частные) – доступ можно получить только в классе, в котором объявлены данные свойства и методы
Если не указать явно спецификатор доступа, то по-умолчанию используется уровень public.
ООП на PHP Спецификаторы доступаСпецификаторы доступа (public, protected, private) позволяют установить различный уровень доступа к свойствам и

Слайд 8ООП на PHP Спецификаторы доступа. Пример

$protected = 2;
private $private = 3;
function myMethod(){
echo $this->protected;
echo $this->private;
}
}
class NewClass

extends MyClass {
function newMethod(){
echo $this->protected;
echo $this->private; // Не работает!!!
}
}
$obj = new MyClass();
echo $obj->public;
$obj->myMethod();
$obj1 = new NewClass();
$obj1->newMethod();
echo $obj->protected; // Не работает!
echo $obj->private; // Не работает!
?>
ООП на PHP Спецификаторы доступа. Пример

Слайд 9ООП на PHP Указатель $this

Вывод значения свойства
print($this->property1);
}
function callMethod(){
// Вызов метода
$this->myMethod();
}
}
?>

ООП на PHP Указатель $this

Слайд 10ООП на PHP Конструкторы и деструкторы
Конструктор класса – это метод, который

вызывается сразу же, как только создан экземпляр класса
Конструктором класса является

специальный метод __construct()
Если при создании объекта не найден метод __construct(), PHP 5 будет пытаться выполнить метод, чье имя совпадает с именем класса (для совместимости с PHP 4)
Конструкторы часто используются для задания начальных значений
Деструктор класса – это метод, который вызывается при уничтожении объекта (при помощи конструкции unset(), либо при завершении работы сценария)
Деструктором класса является специальный метод __destruct()
Деструкторы класса впервые появились в PHP 5
ООП на PHP Конструкторы и деструкторыКонструктор класса – это метод, который вызывается сразу же, как только создан

Слайд 11ООП на PHP Конструкторы и деструкторы. Пример

__construct($var){
$this->property = $var;
echo "Вызван конструктор";
}
function __destruct(){
echo "Вызван деструктор";
}
}

//Вызов конструктора
$obj =

new MyClass(“Значение”);

//Вызов деструктора
unset($obj);
?>
ООП на PHP Конструкторы и деструкторы. Пример

Слайд 12ООП на PHP Копирование объектов
Объекты передаются по ссылке, а не по

значению
Для явного копирования объектов используется метод __clone()

= new MyClass(); // Создаем объект на базе класса
$myObj->property = 1;
$myObj2 = $myObj; // Копирование с стиле PHP4. В PHP5 // $myObj2 всего лишь ссылка на $myObj
$myObj2->property = 2; // Изменяя $myObj2 мы изменяем $myObj
$myObj3 = clone $myObj;// Копируем $myObj со всеми данными. // $myObj и $myObj3 два разных объекта
$myObj3->property = 3;
print($myObj->property); // Печатает 2
print($myObj2->property); // Печатает 2
print($myObj3->property); // Печатает 3
?>
ООП на PHP Копирование объектовОбъекты передаются по ссылке, а не по значениюДля явного копирования объектов используется метод

Слайд 13ООП на PHP Метод __clone()
Объект копируется полностью, со всеми свойствами,

методами и их значениями
К методу __clone() нельзя обратиться непосредственно,

для копирования используется ключевое слово clone
Метод __clone() можно явно определить в классе, что позволит изменить значения свойств копируемого объекта
Метод __clone() не может принимать никакие аргументы, однако позволяет обратиться к получаемому объекту через указатель $this
ООП на PHP Метод __clone() Объект копируется полностью, со всеми свойствами, методами и их значениями К методу

Слайд 14ООП на PHP Перегрузка метода __clone()

2;
}
}

$myObj = new MyClass();
$myObj->property = 1;
$myObj2 = clone $myObj;

print($myObj->property); //

Печатает 1
print($myObj2->property); // Печатает 2
?>
ООП на PHP Перегрузка метода __clone()

Слайд 15ООП на PHP Практическая работа
1. Создайте класс User со свойствами name,

login password. Создайте три объекта не его основе. Задайте значения

свойств объектам.
2. В классе User опишите метод getInfo(), выводящий значения свойств объекта. Вызовите метод для всех объектов.
3. В классе User опишите конструктор, который будет задавать начальные значения свойствам объекта.
ООП на PHP Практическая работа1. Создайте класс User со свойствами name, login password. Создайте три объекта не

Слайд 16ООП на PHP Наследование
На основе существующих классов можно создавать новые

(дочерние) классы, которые будут расширять функциональность базовых (родительских) классов
Для

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

Слайд 17ООП на PHP Наследование. Пример

$this->numWheels;
}
}

class Toyota extends Car {
public $country = ‘Japan’;
function printCountry() {
echo

$this->country;
}
}

$myCar = new Toyota();
$myCar->printWheels();
$myCar->printCountry();
?>
ООП на PHP Наследование. Пример

Слайд 18ООП на PHP Обработка исключений
Конструкция throw генерирует исключение
Внутри блока

try размещается код, в котором ожидается возникновение исключительной ситуации
Внутри

блока catch происходит перехват и обработка исключительной ситуации
Можно использовать несколько блоков catch
Можно создавать собственные классы исключений, производные от встроенного класса Exception
ООП на PHP Обработка исключений Конструкция throw генерирует исключение Внутри блока try размещается код, в котором ожидается

Слайд 19ООП на PHP Обработка исключений. Пример

== 0) throw new Exception("Деление на 0!");
echo $a/$b;
}catch(Exception $e){
echo "Произошла

ошибка - ",
$e->getMessage(), // Выводит сообщение
" в строке ",
$e->getLine(), // Выводит номер строки
" файла ",
$e->getFile(); // Выводит имя файла
}
?>
ООП на PHP Обработка исключений. Пример

Слайд 20ООП на PHP Генерация собственных исключений

{
parent::__construct($message);
}
}
try {
$a = 1;
$b = 0;
if ($b == 0) throw

new MathException("Деление на 0!");
echo $a / $b;
} catch (MathException $e) {
echo "Произошла математическая ошибка ",
$e->getMessage(),
" в строке ", $e->getLine(),
" файла ", $e->getFile();
}
?>
ООП на PHP Генерация собственных исключений

Слайд 21ООП на PHP Абстрактные методы и классы
Абстрактные методы имеют только

объявление и не имеют реализации
Если в классе присутствует хотя

бы один абстрактный метод, класс должен быть также объявлен как абстрактный
Абстрактные классы могут содержать как абстрактные, так и не абстрактные методы
Невозможно создать объект абстрактного класса (можно лишь определять классы-потомки от родительских абстрактных классов)
Для обозначения абстрактного класса или абстрактного метода используется ключевое слово abstract
ООП на PHP Абстрактные методы и классы Абстрактные методы имеют только объявление и не имеют реализации Если

Слайд 22ООП на PHP Абстрактные методы и классы. Пример

function startEngine();
}

class InjectorCar extends Car {
public function startEngine(){
print(‘Инжекторный двигатель завёлся!’);
}
}

$myMegaCar

= new InjectorCar();
$myMegaCar->startEngine();
?>
ООП на PHP Абстрактные методы и классы. Пример

Слайд 23ООП на PHP Интерфейсы
Интерфейсы – это абстрактные классы, которые не

содержат свойств и имеют только абстрактные методы
В PHP 5

класс не может быть порожден от нескольких классов, однако класс может быть создан на основе нескольких интерфейсов
Для обозначения интерфейса используется ключевое слово interface
Перед описанием методов интерфейса НЕ нужно указывать ключевое слово abstract
При формировании класса на основе интерфейсов используется ключевое слово implements (а не extends)
ООП на PHP Интерфейсы Интерфейсы – это абстрактные классы, которые не содержат свойств и имеют только абстрактные

Слайд 24ООП на PHP Интерфейсы. Пример

Human implements Hand, Foot {
public function UseKeyboard(){
print(‘Поработали с клавиатурой!’);
}
public function

PlayFootball(){
print(‘Поиграли в футбол!’);
}
}
$vasya = new Human();
$vasya->UseKeyboard();
$vasya->PlayFootball();
?>
ООП на PHP Интерфейсы. Пример

Слайд 25ООП на PHP Финальные методы и классы
Финальный метод не может

быть переопределен в классах, производных от данного класса
Для обозначения

финального метода, перед ним указывается ключевое слово final
Финальный класс не может иметь потомков
Для обозначения финального класса, перед ним указывается ключевое слово final
Если класс обозначен, как финальный, то все его методы автоматически становятся финальными (указывать ключевое слово final перед ними нет необходимости)
ООП на PHP Финальные методы и классы Финальный метод не может быть переопределен в классах, производных от

Слайд 26ООП на PHP Финальные методы и классы. Пример

Sum($a,$b){ // Финальный метод
return $a + $b;
}
}
class Algebra extends Mathematics {
public

function Sum($a,$b){ // Возникнет ошибка
$c = $a + $b;
return $c;
}
}
?>

final class Breakfast { // Финальный класс
function eatFood($food){
print(“Скушали $food!”);
}
}
class McBreakfast extends Breakfast {...}// Возникнет ошибка
?>

ООП на PHP Финальные методы и классы. Пример

Слайд 27ООП на PHP Константы класса
Для объявления константы класса используется ключевое слово

const

class Human {
const HANDS = 2;
}

К константе класса нельзя обратиться

через объект. Для доступа к константе используется оператор “::”.

print (‘Количество рук: ‘ . Human::HANDS);

Внутри класса к константе можно обратиться через ключевое слово self (через $this – нельзя!)

print (self::HANDS);
ООП на PHP Константы классаДля объявления константы класса используется ключевое слово constclass Human {	const HANDS = 2;}К

Слайд 28ООП на PHP Статические свойства и методы класса
Статические свойства едины

для всего класса и не принадлежат конкретному экземпляру класса (объекту)

При изменении статического свойства в одном из методов любого объекта, его значение меняется и для всех остальных объектов класса
Для объявления статического свойства используется кл. слово static
К статическим свойствам можно обращаться вне контекста объекта (через оператор “::”)
Статические методы едины для всего класса и не принадлежат конкретному экземпляру класса (объекту)
Для объявления статического метода используется кл. слово static
К статическим методам можно обращаться вне контекста объекта (через оператор “::”)
Внутри статического метода НЕЛЬЗЯ использовать указатель $this
ООП на PHP Статические свойства и методы класса Статические свойства едины для всего класса и не принадлежат

Слайд 29ООП на PHP Статические свойства класса. Пример

0; // Статическое свойство
function __construct(){
++self::$zceCount;
}
}
$vasya = new ZendCertifiedEngineer();
$petya = new

ZendCertifiedEngineer();
print ('Текущее количество ZCE: ' . ZendCertifiedEngineer::$zceCount);
?>

class Rally {
static function welcome(){ // Статический метод
print ('Добро пожаловать на ралли');
}
}
print (Rally::welcome());
?>

ООП на PHP Статические свойства класса. Пример

Слайд 30ООП на PHP instanceof
instanceof позволяет определить:
является ли объект экземпляром конкретного

класса
является ли объект экземпляром класса, производного от какого-либо класса

является ли объект производным какого-либо интерфейса

class Human {}
$myBoss = new Human();
if($myBoss instanceOf Human)
print('Мой Босс – человек!');
?>

ООП на PHP instanceofinstanceof позволяет определить: является ли объект экземпляром конкретного класса является ли объект экземпляром класса,

Слайд 31ООП на PHP Методы доступа к свойствам объекта
Метод доступа __get()

позволяет проводить динамическое чтение значение свойств объектов
В качестве параметра

методу __get() передается имя свойства
Метод доступа __set() позволяет проводить динамическое назначение значений свойств объектов
В качестве параметров методу __set() передаются имя свойства и устанавливаемое значение
ООП на PHP Методы доступа к свойствам объекта Метод доступа __get() позволяет проводить динамическое чтение значение свойств

Слайд 32ООП на PHP Методы доступа к свойствам. Пример

__get($name){
print("Чтение значения свойства $name ");
return $this->properties[$name];
}
function __set($name,$value){
print("Задание нового свойства $name

= $value");
$this->properties[$name] = $value;
}
}
$obj = new MyClass;
$obj->property = 1; // Задание нового свойства property = 1
$a = $obj->property; // Чтение значения свойства property
print $a; // 1
?>
ООП на PHP Методы доступа к свойствам. Пример

Слайд 33ООП на PHP Перебор свойств объекта
В PHP 5 можно перебирать все

свойства объекта в операторе foreach

$yearOfBorn){
$this->name = $name;
$this->yearOfBorn = $yearOfBorn;
}
}

$billGates = new Human('Bill Gates',1955);
foreach($billGates as $name=>$value){
print($name.': '.$value.'
');
}
?>
ООП на PHP Перебор свойств объектаВ PHP 5 можно перебирать все свойства объекта в операторе foreach

Слайд 34ООП на PHP Практическая работа
1. Опишите класс SuperUser на основе класса

User. В классе опишите свойство $role и метод getInfo()
2. Опишите

конструктор, в котором генерируйте исключение если введены не все данные. Опишите перехват исключения и выведите сообщение об ошибке.
3. В классах User и SuperUser опишите статические свойства для подсчета количества объектов. Присвойте этим свойствам начальные значения (0), в конструкторе инкрементируйте их. После создания объектов, выведите количество объектов на экран.
ООП на PHP Практическая работа1. Опишите класс SuperUser на основе класса User. В классе опишите свойство $role

Слайд 35PHP и SQLite

PHP и SQLite

Слайд 36PHP и SQLite
SQLite – библиотека, написанная на языке С

Осуществляет механизм работы с данными с помощью SQL
Реализованы как

серверные, так и клиентские функции
Данные записываются в файл на диске
PHP и SQLite SQLite – библиотека, написанная на языке С Осуществляет механизм работы с данными с помощью

Слайд 37PHP и SQLite Преимущества
Полностью бесплатна
Нет необходимости в средствах администрирования

– права доступа реализуются файловой системой сервера
Бестиповая СУБД (все

данные хранятся в виде строк)
Высокая производительность
Легкая переносимость
Поддержка процедурного и объектно-ориентированного интерфейсов
Хранение данных объемом до 2 терабайт
Хранение строк и бинарных данных неограниченной длины
PHP и SQLite Преимущества Полностью бесплатна Нет необходимости в средствах администрирования – права доступа реализуются файловой системой

Слайд 38PHP и SQLite Производительность

PHP и SQLite Производительность

Слайд 39PHP и SQLite Ограничения
SQLite предназначен для небольших и средних приложений

Основной выигрыш в производительности, если преобладают операции вставки и выборки

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

Слайд 40PHP и SQLite Открытие и закрытие соединения

PDO("sqlite:/var/www/html/sqlite.db");

// Выполняем какие-то действия

// Закрываем соединение
unset($db);
?>

PHP и SQLite Открытие и закрытие соединения

Слайд 41PHP и SQLite Создание таблицы
При описании полей таблицы SQLite игнорирует

всё, кроме имен полей и сочетания INTEGER PRIMARY KEY
Указание

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

CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER(2) );
В SQLite идентично:
CREATE TABLE users (id INTEGER PRIMARY KEY, name, age);

PHP и SQLite Создание таблицы При описании полей таблицы SQLite игнорирует всё, кроме имен полей и сочетания

Слайд 42PHP и SQLite Выполнение запроса

"CREATE TABLE users (id INTEGER PRIMARY KEY,
name, login ,password)";
$result

= $db->query($sql);

// Закрываем соединение
unset($db);
?>
PHP и SQLite Выполнение запроса

Слайд 43PHP и SQLite Экранирование спецсимволов

htmlspecialchars($db->quote("Д'Артаньян"));
$login = htmlspecialchars($db->quote("Ссылка"));
$password = htmlspecialchars($db->quote("fbnc);akefvfi"));

$sql = "INSERT INTO users

('name', 'login', 'password')
VALUES ($name,$login,$password)";
$db->query($sql) or die("Ошибка выполнения запроса");
echo "Добавили в базу: $name, $login, $password
";
// Закрываем соединение
unset($db);
?>
PHP и SQLite Экранирование спецсимволов

Слайд 44PHP и SQLite Идентификатор последней записи

"id: ".$db->lastInsertId();
// Закрываем соединение
unset($db);
?>

PHP и SQLite Идентификатор последней записи

Слайд 45PHP и SQLite Обработка результатов запроса

"SELECT * FROM users";
$result = $db->query($sql) or die("Ошибка выполнения запроса");
while($row

= $result->fetch()){
echo $row['id']." ".$row['name']." ".$row['login']." ".$row['password']."
";
}
unset($db);
?>

$db = new PDO("sqlite:../sqlite.db");
$sql = "SELECT * FROM users";
$result = $db->query($sql) or die("Ошибка выполнения запроса");
foreach ($result->fetchAll() as $row => $value){
echo $value['id']." ".$value['name']." ".$value['login']." ".$value['password']."
";
}
unset($db);
?>

PHP и SQLite Обработка результатов запроса

Слайд 46PHP и SQLite Демонстрация
Открытие соединения с БД
Создание таблицы
Фильтрация пользовательских данных
Добавление данных

в таблицу и получение ID последней записи
Обработка результатов выборки
Закрытие соединения

PHP и SQLite ДемонстрацияОткрытие соединения с БДСоздание таблицыФильтрация пользовательских данныхДобавление данных в таблицу и получение ID последней

Слайд 47

to create database"); $sql = "CREATE TABLE catalog (id INTEGER PRIMARY KEY, name VARCHAR(50), price

VARCHAR(15))"; $this->db->query($sql) or die("Unable to create table"); }else $this->db = new PDO('sqlite:'.$conn) or die("Unable to connect to database"); } function __destruct(){ unset($db); } function insert($name,$price){ $name = htmlspecialchars($this->db->quote(trim($name))); $price = htmlspecialchars($this->db->quote(trim($price))); $sql = "INSERT INTO catalog (name, price) VALUES ($name,$price)"; $this->db->query($sql) or die("Unable to execute query"); } function select(){ $sql = "SELECT * FROM catalog"; $result = $this->db->query($sql) or die ("Unable to execute query"); return $result; } } $eshop = new Eshop('C:\Program Files\Apache Group\Apache2\htdocs'); if(isset($_POST['name']) && isset($_POST['price']) && $_POST['name'] != '' && $_POST['price'] != '') $eshop->insert($_POST['name'],$_POST['price']);?>

select(); foreach($catalog->fetchAll() as $row){ echo $row['name'].' '.$row['price'].'
'; }?>

Слайд 48PHP и SQLite Практическая работа
1. Опишите класс Eshop, в нем определите

свойство $db для хранения объекта БД
2. В конструкторе сделайте проверку

на существование файла БД. Если база не существует, создайте ее, а так же таблицу catalog в ней и соединитесь с БД. В противном случае просто соединитесь с БД.
3. В деструкторе закрывайте соединение с БД.
4. В классе опишите метод insert(), который будет содержать SQL-запрос на добавление данных в таблицу catalog
5. Получите данные из формы, отфильтруйте их и сохраните в БД с помощью вышеописанного метода.
6. Выведите данные по строкам в составе HTML-таблицы
PHP и SQLite Практическая работа1. Опишите класс Eshop, в нем определите свойство $db для хранения объекта БД2.

Слайд 49PHP и XML

PHP и XML

Слайд 50PHP и XML
XML (Extensible Markup Language) Расширяемый язык разметки

Предназначен для:

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

основе других, более специализированных, языков разметки
Цель создания:
обеспечение совместимости при передаче структурированных данных между разными системами обработки информации
PHP и XMLXML (Extensible Markup Language) Расширяемый язык разметки Предназначен для: хранения структурированных данных обмена информацией между

Слайд 51PHP и XML Пример



Л.Аткинсон
PHP5. Библиотека профессионала

2005
448


Д.Коггзолл
PHP5. Полное руководство
2006
336


PHP и XML Пример      Л.Аткинсон    PHP5. Библиотека профессионала

Слайд 52PHP и XML Синтаксис
XML-документ состоит из вложенных элементов
XML чувствителен

к регистру символов
Элемент состоит из открывающего и закрывающего тегов,

а также содержимого Vasya Pupkin
Возможно формирование пустых элементов – без содержимого

Элементы могут иметь атрибуты ...
PHP и XML Синтаксис XML-документ состоит из вложенных элементов XML чувствителен к регистру символов Элемент состоит из

Слайд 53PHP и XML Правила
Если документ содержит символы, выходящие за рамки

ASCII, необходимо указать кодировку
Все парные теги должны быть закрыты

Теги должны быть правильно вложены друг в друга
Значения атрибутов заключаются в одинарные или двойные кавычки
У каждого конкретного элемента не должно быть повторяющихся атрибутов
Должен существовать только один корневой элемент, который содержит все остальные элементы
Пустой документ (без корневого элемента) - недопустим
PHP и XML Правила Если документ содержит символы, выходящие за рамки ASCII, необходимо указать кодировку Все парные

Слайд 54PHP и XML Средства PHP5 для работы с XML
DOM (Document

Object Model) - чтение, модификация и создание новых XML-документов
SAX

(Simple API for XML) - получение информации из XML-документа
XSLT (Extensible Stylesheet Language Transformations) - преобразование XML-документов в другие форматы
SimpleXML - чтение и модификация XML-документов
PHP и XML Средства PHP5 для работы с XML DOM (Document Object Model) - чтение, модификация и

Слайд 55PHP и XML SAX (Simple API for XML)
Не является

стандартом W3C
Описывает метод парсинга XML-документов для получения данных из

них
Создавать и изменять XML-документы с помощью SAX невозможно
Основан на событиях
XML-парсеру предоставляется набор собственных функций для обработки различных типов XML-данных
Парсер автоматически вызывает эти функции в процессе последовательной обработки XML-документа
PHP и XML SAX (Simple API for XML)  Не является стандартом W3C Описывает метод парсинга XML-документов

Слайд 56PHP и XML SAX. Создание парсера
$xml = xml_parser_create("UTF-8");

Создает новый XML-парсер

Возвращает ресурс
Необязательный аргумент encoding указывает кодировку

PHP и XML SAX. Создание парсера$xml = xml_parser_create(

Слайд 57PHP и XML Обработка открывающего XML-элемента
function start_tag_handler ($xml, $tag, $attributes){
...
}

Аргументы:
Ссылка

на XML-парсер (ресурс)
Название элемента
Ассоциативный массив атрибутов элемента

PHP и XML Обработка открывающего XML-элементаfunction start_tag_handler ($xml, $tag, $attributes){	...}Аргументы: Ссылка на XML-парсер (ресурс) Название элемента Ассоциативный

Слайд 58PHP и XML Обработка текстового узла
function character_handler ($xml, $data){
...
}

Аргументы:
Ссылка на

XML-парсер (ресурс)
Текстовые данные

PHP и XML Обработка текстового узлаfunction character_handler ($xml, $data){	...}Аргументы: Ссылка на XML-парсер (ресурс) Текстовые данные

Слайд 59PHP и XML Обработка закрывающего XML-элемента
function end_tag_handler ($xml, $tag){
...
}

Аргументы:
Ссылка на

XML-парсер (ресурс)
Название элемента

PHP и XML Обработка закрывающего XML-элементаfunction end_tag_handler ($xml, $tag){	...}Аргументы: Ссылка на XML-парсер (ресурс) Название элемента

Слайд 60PHP и XML Регистрация обработчиков элементов
xml_set_element_handler($xml,
"start_tag_handler",
"end_tag_handler");

Регистрирует функции обработки начала и конца

XML-элемента
Атрибуты:
Ссылка на XML-парсер (ресурс)
Название функции обработки начала элемента

Название функции обработки конца элемента
PHP и XML Регистрация обработчиков элементовxml_set_element_handler($xml,

Слайд 61PHP и XML Регистрация обработчика текстовых узлов
xml_set_character_data_handler($xml, "character_handler");

Регистрирует функции обработки текстового

узла
Атрибуты:
Ссылка на XML-парсер (ресурс)
Название функции обработки текстового узла

PHP и XML Регистрация обработчика текстовых узловxml_set_character_data_handler($xml,

Слайд 62PHP и XML Парсинг XML-документа
xml_parse($xml, file_get_contents("catalog.xml"));

Начинает процесс парсинга XML-документа
Атрибуты:
Ссылка на

XML-парсер (ресурс)
XML-данные для разбора

PHP и XML Парсинг XML-документаxml_parse($xml, file_get_contents(

Слайд 63PHP и XML SAX. Пример

$tag != 'BOOK') echo "";
if($tag == 'BOOK') echo "";
}
function end_tag_parse($xml,

$tag){
if($tag != 'CATALOG'){
if($tag == 'BOOK') echo "";
if($tag != 'BOOK') echo "";
}
}
function character_parse($xml, $data){
echo $data;
}
$xml = xml_parser_create("UTF-8");
xml_set_element_handler($xml,"start_tag_parse","end_tag_parse");
xml_set_character_data_handler($xml, "character_parse");
?>




АвторНазвание Год изданияЦена

PHP и XML SAX. Пример	АвторНазвание		Год изданияЦена

Слайд 64PHP и XML XSLT (Extensible Stylesheet Language Transformations)
Стилевая технология, предназначенная

для трансформации XML-документов в другие форматы
Таблицы стилей XSL создаются

по правилам XML-документов
Таблицы стилей XSL состоят из набора шаблонов
PHP и XML XSLT (Extensible Stylesheet Language Transformations) Стилевая технология, предназначенная для трансформации XML-документов в другие форматы

Слайд 65PHP и XML Корневой элемент XSL-документа


...


PHP и XML Корневой элемент XSL-документа...

Слайд 66PHP и XML Описание формата вывода

PHP и XML Описание формата вывода

Слайд 67PHP и XML Описание XSL-шаблона

...


В атрибуте match указывается узел, к

которому будет применяться данный шаблон

PHP и XML Описание XSL-шаблона...В атрибуте match указывается узел, к которому будет применяться данный шаблон

Слайд 68PHP и XML Цикл for-each

...

...


В атрибуте select элемента

for-each указывается узел, к которому будет применяться данный цикл.
В атрибуте

select элемента value-of указывается имя узла, содержимое которого нужно получить.
PHP и XML Цикл for-each	...		...В атрибуте select элемента for-each указывается узел, к которому будет применяться данный цикл.В

Слайд 69PHP и XML Применение таблицы XSL к XML-документу на стороне клиента

version="1.0" encoding="UTF-8"?>



С.Хьюз

PHP кукбук


PHP и XML Применение таблицы XSL к XML-документу на стороне клиента      С.Хьюз

Слайд 70PHP и XML Применение таблицы XSL к XML-документу на стороне сервера

= new DOMDocument();
$xml->load("catalog.xml");

$xsl = new DOMDocument();
$xsl->load("catalog.xsl");

$processor = new XSLTProcessor();
$processor->importStylesheet($xsl);

$html =

$processor->transformToXml($xml);
echo $html;
?>
PHP и XML Применение таблицы XSL к XML-документу на стороне сервера

Слайд 71PHP и XML XSLT. Пример



match="/">
XSLT
Автор

Название
Год
Цена









PHP и XML XSLT. Пример XSLT  Автор    Название    Год

Слайд 72PHP и XML Практическая работа
1. Средствами SAX создайте XML-парсер. Создайте и

назначьте обработчики начальных и конечных тегов и текстовых узлов. Распарсите

документ cars.xml и выведите его содерфимое в таблице.
2. Опишите XSL-документ. Примените описанную таблицу стилей к XML-документу cars.xml на стороне клиента. Проделайте то же самое на стороне сервера
PHP и XML Практическая работа1. Средствами SAX создайте XML-парсер. Создайте и назначьте обработчики начальных и конечных тегов

Слайд 73PHP и XML SimpleXML
Новое расширение в PHP 5
Представляет XML-документ

в виде объекта PHP
Все узлы XML-документа становятся соответствующими свойствами

этого объекта
PHP и XML SimpleXML Новое расширение в PHP 5 Представляет XML-документ в виде объекта PHP Все узлы

Слайд 74PHP и XML Создание объекта на основе XML-документа
$sxml = simplexml_load_file("catalog.xml");

Конвертирует указанный

XML-документ в объект класса SimpleXMLElement

PHP и XML Создание объекта на основе XML-документа$sxml = simplexml_load_file(

Слайд 75PHP и XML Чтение данных в SimpleXML
Исходный XML-документ



С.Хьюз
PHP кукбук



Григин
Специальный справочник


Вывод названия первой книги
echo $sxml->book[0]->title;
Изменение автора второй книги
$sxml->book[1]->author = "Вася Пупкин";
PHP и XML Чтение данных в SimpleXMLИсходный XML-документ      С.Хьюз

Слайд 76PHP и XML Трансформация объекта SimpleXML в XML
file_put_contents ("catalog.xml", $sxml->asXML());


Слайд 77PHP и XML SimpleXML. Пример


SimpleXML


Автор
Название
Год

издания
Цена




PHP и XML SimpleXML. Пример	SimpleXML						Автор			Название			Год издания			Цена

Слайд 78PHP и XML DOM (Document Object Model)
Интерфейс, позволяющий программам управлять

содержимым документов XML, а также изменять их структуру
Представляет XML-документ

в виде дерева узлов
Существует спецификация DOM (W3C)
PHP и XML DOM (Document Object Model) Интерфейс, позволяющий программам управлять содержимым документов XML, а также изменять

Слайд 79PHP и XML Создание экземпляра класса DOMDocument
class DOMDocument {
__construct (
[string version
[,

string encoding]] )
}

В параметре version указывается версия XML (часть декларации

XML)
В параметре encoding указывается кодировка XML-документа (часть декларации XML)

$dom = new DOMDocument();
PHP и XML Создание экземпляра класса DOMDocumentclass DOMDocument {__construct (	[string version	[, string encoding]] )}В параметре version указывается

Слайд 80PHP и XML Загрузка XML-документа
bool DOMDocument->load ( string filename [, int

options] )

В параметре filename указывается путь к XML-документу

$dom->load("catalog.xml");

PHP и XML Загрузка XML-документаbool DOMDocument->load ( string filename [, int options] ) В параметре filename указывается

Слайд 81PHP и XML Доступ к корневому элементу
domelement DomDocument->document_element

Содержит корневой элемент в

виде объекта DOMElement

$root = $dom->documentElement;

PHP и XML Доступ к корневому элементуdomelement DomDocument->document_elementСодержит корневой элемент в виде объекта DOMElement$root = $dom->documentElement;

Слайд 82PHP и XML Получение потомков любого элемента
array DomNode->child_nodes

Содержит массив всех узлов-потомков

текущего узла

$children = $root->childNodes;

PHP и XML Получение потомков любого элементаarray DomNode->child_nodesСодержит массив всех узлов-потомков текущего узла$children = $root->childNodes;

Слайд 83PHP и XML Получение типа элемента
int DomNode->node_type

Содержит тип узла
Тип 1

- XML_ELEMENT_NODE
Тип 2 - XML_ATTRIBUTE_NODE
Тип 3 - XML_TEXT_NODE

Тип 9 - XML_DOCUMENT_NODE

$type = $root->node_type; // $type = 9
PHP и XML Получение типа элементаint DomNode->node_typeСодержит тип узла Тип 1 - XML_ELEMENT_NODE Тип 2 - XML_ATTRIBUTE_NODE

Слайд 84PHP и XML Получение текстового содержимого
string DomNode->textContent

Свойство, значением которого является текстовое

содержимое элемента

echo $book->textContent;

PHP и XML Получение текстового содержимогоstring DomNode->textContentСвойство, значением которого является текстовое содержимое элементаecho $book->textContent;

Слайд 85PHP и XML Обращение к узлам с определенным именем
DOMNodeList DOMDocument->getElementsByTagName (

string name )

Возвращает все узлы с заданным именем в виде

объекта DOMNodeList
Метод item(int index) объекта DOMNodeList возвращает объекты DOMNode по порядку их расположения в документе

$title = $dom->getElementsByTagName("title");
echo $title->item(0)->textContent;

Слайд 86PHP и XML Создание нового XML-элемента
DOMElement DOMDocument->createElement
( string name [, string

value] )

Создает новый объект класса DOMElement
В параметре name

указывается имя нового узла
В параметре value указывается содержимое нового узла (по-умолчанию – содержимое отсутствует)

$bookDOM = $dom->createElement("book");
PHP и XML Создание нового XML-элементаDOMElement DOMDocument->createElement( string name [, string value] ) Создает новый объект класса

Слайд 87PHP и XML Создание нового текстового элемента
DOMText DOMDocument->createTextNode
( string content )

Создает

новый объект класса DOMText
В параметре content указывается текстовое содержимое

$authortext =

$dom->createTextNode(“Zeev Suraski”);
PHP и XML Создание нового текстового элементаDOMText DOMDocument->createTextNode( string content )Создает новый объект класса DOMTextВ параметре content

Слайд 88PHP и XML Присоединение нового элемента к родительскому
DOMNode DOMNode->appendChild
( DOMNode newnode

)

Добавляет узел в конец списка потомков указанного элемента
В параметре

newnode указывается объект класса DOMNode, который нужно присоединить к родительскому элементу

$authorDOM->appendChild($authortext);
PHP и XML Присоединение нового элемента к родительскомуDOMNode DOMNode->appendChild( DOMNode newnode ) Добавляет узел в конец списка

Слайд 89PHP и XML Сохранение нового XML-документа в файл
mixed DOMDocument->save ( string

filename [, integer options] )

Сохраняет дерево XML-узлов объекта DOMDocument во

внешний файл
В параметре filename указывается путь к сохраняемому файлу

$dom->save("newcatalog.xml");
PHP и XML Сохранение нового XML-документа в файлmixed DOMDocument->save ( string filename [, integer options] )Сохраняет дерево

Слайд 90PHP и XML Создание объекта DOMDocument на основе HTML-документа
bool DOMDocument->loadHTMLFile (

string filename )

Загружает корректный HTML-документ и создает на его

основе объект класса DOMDocument
В параметре filename указывается путь к загружаемому HTML-файлу

$dom->loadHTMLFile("http://www.rosnou.ru");
PHP и XML Создание объекта DOMDocument на основе HTML-документаbool DOMDocument->loadHTMLFile ( string filename ) Загружает корректный HTML-документ

Слайд 91PHP и XML DOM. Пример

width="100%">';
echo '
Автор
Название
Год
Цена
';
foreach ($dom->documentElement->childNodes as $element) {
if ($element->nodeType ==

1 && $element->nodeName == "book"){
echo '';
PHP и XML DOM. Пример

Слайд 92PHP и XML DOM. Пример (продолжение)
foreach ($element->childNodes

as $book) {
if ($book->nodeType

== 1 && $book->nodeName == "author")
echo ''.$book->textContent."";
if ($book->nodeType == 1 && $book->nodeName == "title")
echo ''.$book->textContent."";
if ($book->nodeType == 1 && $book->nodeName == "pubyear")
echo ''.$book->textContent."";
if ($book->nodeType == 1 && $book->nodeName == "price")
echo ''.$book->textContent."";
}
echo '';
}
}
echo '';
?>

Слайд 93PHP и XML Практическая работа
1. Средствами SimpleXML распарсите XML-документ cars.xml и

выведите на страницу в таблице.
2. Создайте объект на базе класса

DOMDocument и загрузите в него XML-документ. Средствами DOM распарсите документ и выведите данные на страницу в таблице.
PHP и XML Практическая работа1. Средствами SimpleXML распарсите XML-документ cars.xml и выведите на страницу в таблице.2. Создайте

Слайд 94Cars.xml
Maserati

3200GT черный 2000

1300000 Maybach 62 черный 2004 10000000 ЗАЗ 965 желтый 1964 30000
Cars.xml  	Maserati    3200GT    черный    2000

Слайд 95Cars.xsl

Брэнд Модель Цвет Год выпуска Цена
Cars.xsl          	 Брэнд     Модель

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика