Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lec3-thesis.doc
Скачиваний:
4
Добавлен:
14.11.2019
Размер:
69.12 Кб
Скачать

Область видимости

public - открытый доступ (по умолчанию, то же что использовать var)

protected - только внутри класса или потомков

private - только внутри класса

Объекты одного класса имеют доступ к защищенным свойствам/методам друг друга

Объявление свойств и методов класса статическими (static) позволяет обращаться к ним без создания экземпляра класса. псевдо-переменная $this не доступна внутри метода, объявленного статическим. Доступ к статическим свойствам класса не может быть получен через оператор ->.

Оператор разрешения области видимости или просто "двойное двоеточие" :: - это лексема, позволяющая обращаться к статическим свойствам, константам и перегруженным свойствам или методам класса. При обращении к этим элементам извне класса, необходимо использовать имя этого класса. Для обращения к свойствам и методам внутри самого класса используются ключевые слова self, parent и static.

Абстрактные классы

abstract class AbstractClass

{

/* Данный метод должен быть определён в дочернем классе */

abstract protected function getValue();

abstract protected function prefixValue($prefix);

/* Общий метод */

public function printOut() {

print $this->getValue() . "\n";

}

}

При наследовании от абстрактного класса, все методы, помеченные абстрактными в родительском классе, должны быть определены в классе-потомке; кроме того, область видимости этих методов должна совпадать (или быть менее строгой).

Интерфейсы - как в яве

объявляются как классы, но вместо class - interface. Содержат только публичные методы. По сути близки к абстрактным классам. Могут содержать константы, но не перекрываются реализующими классами. Могут расширять друг друга (допустимо множественное наследование).

class Child implements example_interface {}

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

Магические методы вызываются автоматически в определенных ситуациях

__construct(), __destruct() - создание/уничтожение

__call(), __callStatic(), __get(), __set(), __isset(), __unset() - "перегрузка" свойств и методов - динамическое их создание

__sleep() и __wakeup() - используются при сериализации/десериализации объекта

__toString() - преобразование в строку

__invoke() - при выполнении объекта как функции

__set_state() - для var_export()

__clone() - при клонировании объектов вызывается у клона для переинициализации свойств

В PHP5 объекты передаются всегда как ссылки. Присваивание объектов тоже происходит по ссылке.

Создание копии - клонирование объектов $copy_of_object = clone $object;

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

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

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

Сериализация объектов - сохранение объектов между сессиями

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

Для того, чтобы иметь возможность сделать unserialize() для объекта нужно чтобы класс этого объекта был определен заранее.

=====================================

MySQL

MySQL - это популярная система управления базами данных (СУБД), очень часто применяемая в сочетании с PHP.

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

Схема "Клиент-сервер"

трехуровневая структура: базы данных — таблицы — записи.

Тип поля может быть:

- Целым;

- Вещественным;

- Строковым;

- Бинарным;

- Дата и время;

- Перечисления и множества.

Возможные типы данных, диапазоны и описания представлены в последующих таблицах:

Целочисленные типы данных

Тип Диапазон

TINYINT -128...+127

SMALLINT -32768...+32767

MEDIUMINT -8 388 608...+8 388 607

INT -2 147 483 648...+2 147 483 647

BIGINT -9 223 372 036 854 775 808...+9 223 372 036 854 775 807

Вещественные числа

Тип Описание

FLOAT Небольшая точность

DOUBLE Двойная точность

REAL То же, что и DOUBLE

DECIMAL Дробное число, хранящееся в виде строки

NUMERIC То же, что и DECIMAL

Строки

Любая строка - это массив символов. При поиске с помощью оператора SELECT (мы рассмотрим его далее) не учитывается регистр символов: строки "HELLO" и "Hello" считаются одинаковыми. Можно настроить MySQL на автоматическое перекодирование символов - в этом случае в базе данных строки будут храниться в одной кодировке, а выводиться - в другой. В большинстве случаев применяется тип VARCHAR или просто CHAR, позволяющий хранить строки, содержащие до 255 символов. В скобках после типа указывается длина строки:

VARCHAR(48); CHAR(73);

Тип Описание

TINYTEXT Максимальная длина 255 символов

TEXT Максимальная длина 65535 символов (64 Кб)

MEDIUMTEXT Максимальная длина 16 777 215 символов

LONGTEXT Максимальная длина 4 294 967 295 символов

Бинарные типы данных

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

VARCHAR(30) BINARY;

Тип Описание

TINYBLOB Максимум 255 символов

BLOB Максимум 65535 символов

MEDIUMBLOB Максимум 16 777 215 символов

LONGBLOB Максимум 4 294 967 295

Примечание: Бинарные данные не перекодируются "на лету", если установлена перекодировка символов.

Дата и время

Тип Описание

DATE Дата в формате ГГГ-ММ-ДД

TIME Время в формате ЧЧ:ММ:СС

TIMESTAMP Дата и время в формате timestamp, ГГГГММДДЧЧММСС

DATETIME Дата и время в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС

CREATE TABLE Имя_таблицы (

Имя_поля1 Тип Модификатор

...

Имя_поляN Тип Модификатор

)

Модификаторы:

NOT NULL

PRIMARY KEY

AUTO_INCREMENT

DEFAULT

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]