#7. 2 php Создание класса
Primary tabs
Класс является набором переменных и функций, или, в терминах ООП, свойств и методов. Класс является одним из типов данных. Создавая объекты определенного класса, их можно сохранять в переменных. В предыдущем разделе в качестве примера был приведен класс Animal
, который будет подробно рассмотрен ниже. Описание класса начинается с ключевого слова class
, за которым следует имя создаваемого класса:
class Animal { ... }
Класс предназначен для хранения имени животного, и для этой цели объявляется локальная переменная $name
, называемая в ООП свойством. Ключевое слово private
является модификатором доступа и указывает на то, что свойство $name
доступно только внутри класса. Несмотря на то, что в описании указывается знак $
, свойство традиционно обозначается просто своим именем, в данном случае name
.
class Animal { private $name; ... }
Замечание 1: Ключевое слово var
при определении свойств класса
При определении свойства класса вместо модификатора доступа может использоваться ключевое слово var :
class Animal { var $name; ... }
Это связано с тем, что в старых версиях PHP ограничивать доступ к членам класса было нельзя, и все они неявно имели модификатор |
После описания свойство класса доступно для всех его методов, в частности, для метода set_name
, который предназначен для запоминания имени животного.
class Animal { private $name; public function set_name($text) { ... } ... }
Ключевое слово public
является ещё одним модификатором доступа, который указывает на то, что доступ к методу set_name
объекта класса Animal
имеется в любом месте, где объявлен данный объект.
Замечание 2: Ограничения при определении методов класса
Имеются некоторые ограничения при определении методов класса. Например, не поддерживается перегрузка методов класса, т.е. создание в одном классе нескольких методов с одинаковыми именами, которые различались бы только типами и количеством аргументов. Например, такое описание класса Animal будет ошибочным:
class Animal { private $name; public function set_name($text) { ... } public function set_name($text1, $text2) //ошибка — нельзя перегружать методы { ... } ... }
Также, в отличие от некоторых языков программирования, в PHP нельзя переопределить стандартные арифметические операторы (например, |
Для получения доступа к свойству класса изнутри его метода используется встроенная переменная $this
, которая указывает на текущий объект данного класса. Переменная содержит указатель и используется совместно с оператором ->
, таким образом, для ссылки на свойство name
необходимо использовать следующий синтаксис: $this->name
(следует обратить внимание, что перед именем свойства отсутствует знак $
), синтаксис $this->$name
является некорректным).
class Animal { private $name; public function set_name($text) { $this->name = $text; } ... }
Другой метод класса, get_name
, возвращает текущее имя животного:
class Animal { private $name; public function set_name($text) { $this->name = $text; } public function get_name() { return $this->name; } }
На этом описание класса Animal
завершено, и в следующем разделе будет продемонстрировано его использование. Имеется возможность инициализации свойств класса при помощи константы, при этом использование любого вида выражений недопустимо:
class Animal { private $name = "Leo"; // Корректный оператор private $name = "L"."e"."o"; // Ошибочный оператор }
Описание класса не может быть разорвано HTML-кодом; весь класс целиком должен быть описан в рамках единой секции <?php...?>
. Кроме того,поскольку в РНР имеется ряд встроенных методов, названия которых начинаются с символов __ (два подчеркивания), не следует использовать их в начале названий собственных методов.
- Log in to post comments
- 649 reads
mariyas
Fri, 09/15/2023 - 10:24
Permalink
Добавлено: "замечание 2"
Добавлено: "замечание 2"