Чтение онлайн

на главную - закладки

Жанры

Курс "Язык программирования PHP"

Савельева Нина Владимировна

Шрифт:

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

<?

class Articles { // Создаем класс Статей

var $title;

var $author;

var $description;

//
метод, который присваивает значения

// атрибутам класса

function make_article($t, $a, $d){

$this->title = $t;

$this->author = $a;

$this->description = $d;

}

//метод для отображения экземпляров класса

function show_article{

$art = $this->title . "<br>" .

$this->description .

"<br>Автор: " . $this->author;

echo $art;

}

}

?>

Итак, для описания физических объектов типа «статья» мы создали класс с именем Articles, состоящий из трех переменных, содержащих характеристики статьи, и двух функций для создания конкретной статьи и для ее отображения.

Как известно, работая с PHP, можно периодически переключаться в режим HTML. В этом случае программа состоит из нескольких кусков (блоков) кода. Определение класса нельзя разносить по разным блокам php-кода и тем более по разным файлам. То есть если написать:

<?php

class Articles { // Начало описания класса

var $title;

?>

<?php

// продолжение описания класса

function show_article{

// содержание метода

}

} // конец описания класса

?>

то программа не будет работать корректно.

Несколько замечаний по поводу имен классов. Имя класса должно удовлетворять правилам именования объектов в языке PHP, но есть ряд имен, которые зарезервированы разработчиками для своих целей. В первую очередь это имена, начинающиеся с символа подчеркивания «_». Для создания классов и функций нельзя использовать такие имена. Кроме того, зарезервировано имя stdClass, поскольку оно используется внутри движка PHP.

Инициализация переменных

Часто некоторым атрибутам класса бывает необходимо присваивать значения сразу после создания представителя класса. Когда мы создавали класс статей, для присваивания значений атрибутам (свойствам) класса мы использовали специальную функцию make_article. Вообще говоря, мы поступили не совсем верно, потому что занялись изобретением велосипеда. Специально для задания начальных значений атрибутам класса существует два стандартных метода. В PHP4 можно инициализировать значения с помощью оператора var или с помощью функции

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

Приведем пример. Допустим, при создании объекта «статья» мы хотим установить его свойства следующим образом: автора – равным строке «Иванов», название и краткое содержание – соответствующим элементам глобального массива $_POST, а дату публикации статьи – текущей дате. Тогда следующее описание класса не является корректным в PHP4:

<?

class Articles { // Создаем класс Статей

var $title= $_POST["title"];

var $author = "Иванов";

var $description = $_POST["description"];

var $published = date("Y-m-d");

// метод, который присваивает значения

// атрибутам класса

}

?>

А вот такое описание класса в PHP4 будет работать так, как нужно:

<?

class Articles { // Создаем класс Статей

var $title;

var $author = "Иванов";

var $description;

var $published;

// метод, который присваивает значения

// атрибутам класса

function Articles{

$this->title = $_POST["title"];

$this->description = $_POST["description"];

$this ->published = date("Y-m-d");

}

}

?>

Отметим, что в PHP3 и PHP4 конструкторы работают по-разному. В PHP3 функция становилась конструктором, если она имела то же имя, что и класс, а в PHP4 – если она имеет то же имя, что и класс, в котором она определена. Разница в подходах видна, когда один класс расширяет другой и происходит наследование свойств и методов базового класса. Но об этом мы поговорим чуть позже. В PHP5 конструктор класса именуется _construct. Кроме того, в PHP5 появились и деструкторы – функции, которые вызываются автоматически перед уничтожением объекта. В PHP5 функция-деструктор должна быть названа _destruct.

Объекты

В одной из первых лекций мы упоминали о существовании в PHP такого типа данных, как объект. Класс – это описание данных одного типа, данных типа объект. Классы являются как бы шаблонами для реальных переменных. Переменная нужного типа создается из класса с помощью оператора new. Создав объект, мы можем применять к нему все методы и получать все свойства, определенные в описании класса. Для этого используют такой синтаксис: $имя_объекта->название_свойства или $имя_объекта->название_метода(список аргументов). Заметим, что перед названием свойства или метода знака $ не ставят.

Поделиться:
Популярные книги

Война по понедельникам (сборник)

Первушин Антон Иванович
Фантастика:
научная фантастика
5.00
рейтинг книги
Война по понедельникам (сборник)

Тузы за границей

Мартин Джордж Р.Р.
4. Дикие карты
Фантастика:
научная фантастика
7.14
рейтинг книги
Тузы за границей

Русские инородные сказки - 6

Фрай Макс
6. Русские инородные сказки
Фантастика:
фэнтези
6.25
рейтинг книги
Русские инородные сказки - 6

Цитаты из всемирной истории. От древности до наших дней. Справочник

Душенко Константин Васильевич
Справочная литература:
прочая справочная литература
6.25
рейтинг книги
Цитаты из всемирной истории. От древности до наших дней. Справочник

Иди куда хочешь

Олди Генри Лайон
3. Черный Баламут
Фантастика:
эпическая фантастика
8.77
рейтинг книги
Иди куда хочешь

Сон разума

Ливадный Андрей Львович
39. Экспансия: История Галактики
Фантастика:
космическая фантастика
8.81
рейтинг книги
Сон разума

Газлайтер. Том 29

Володин Григорий Григорьевич
29. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
6.40
рейтинг книги
Газлайтер. Том 29

Возвращение

Измайлова Кира Алиевна
2. Случай из практики
Фантастика:
фэнтези
9.54
рейтинг книги
Возвращение

История религии (Том 1)

Мень Александр Владимирович
Религия и эзотерика:
религия
6.25
рейтинг книги
История религии (Том 1)

Психология взрослости

Ильин Евгений Павлович
Мастера психологии
Научно-образовательная:
психология
6.25
рейтинг книги
Психология взрослости

Эпилог

Каверин Вениамин Александрович
Мой 20 век
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Эпилог

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

Основы логистики

Левкин Григорий Григорьевич
Деловая литература:
экономика
отраслевые издания
5.00
рейтинг книги
Основы логистики

Право на поединок

Семёнова Мария Васильевна
2. Волкодав
Фантастика:
героическая фантастика
9.37
рейтинг книги
Право на поединок