Работа с классами и объектами (часть 1)

Для создания класса, нужно использовать ключевое слово class:

1
2
3
class BigCar {
  //тело класса
}

Мы создали класс BigCar. Замечание: писать имя класса с большой буквы, это не стандарт, а просто рекомендация! Запрещено использовать в начале имени класса цифру. Тело класса (код) должно быть заключено в фигурные скобки.

Создадим на основе класса объекты. Напомню, что объект — это экземпляр класса. Тип объекта определяет классом. Поскольку объект строится на основе шаблона (класса) то мы используем оператор new.

1
2
$vaz = new BigCar();
$zaz = new BigCar();

Мы создали два объекта, которые сейчас являются пустыми, однако это разные объекты одного типа.

Давайте посмотрим, что находится внутри объектов, которые мы создали. Для этого используем код:

1
var_dump($vaz, $zaz);

Данный код покажет содержимое объектов, но использовать его для вывода — не самый оптимальный способ.

Команда var_dump покажет содержимое объектов и их идентификатор.

Добавляем свойства в класс

В классах можно определять переменные с которыми можно работать внутри класса, или обращаться извне. Каждая переменная-свойство в классе имеет определенную область видимости:

  • public — доступ к свойствам и методам класса разрешен отовсюду
  • protected — разрешен доступ только наследуемым и родительским классам
  • private — обращаться может только класс, где объявлен элемент

Рассмотрим пример:

Данный пример работает только в версии PHP5 и выше. В старых версиях пример работать не будет.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class BigCar
{
    public $public = 'ТАЗ';
    protected $protected = 'Ведро';
    private $private = 'Стоит дешевле чем продаем';
 
    function printCar()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}
 
$obj = new BigCar();
echo $obj->public; // Работает
echo $obj->protected; // Неисправимая ошибка
echo $obj->private; // Неисправимая ошибка
$obj->printCar(); // Выводит Общий, Защищенный и Закрытый
 
?>

Строки с комментариями «неисправимая ошибка» приведут к остановке скрипта, поскольку мы не можем к ним обращаться. Однако, если их комментировать и обратиться через метод самого объекта, то метод, поскольку имеет доступ к данным переменным, выведет их на экран.

Обратите внимание, мы при создании класса, задали часть переменных внутри него. Теперь все объекты, которые будут созданы на основе класса могут обращаться к значениям этих переменных.

Также мы можем переназначать значения переменных созданных в классе.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
class BigCar
{
    public $public = 'ТАЗ';
    protected $protected = 'Ведро';
    private $private = 'Стоит дешевле чем продаем';
 
    function printCar()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}
 
$car = new BigCar();
$car2=new BigCar();
 
$car->public = 'Автомобиль';
echo $car->public.'<br>';
echo $car2->public;
 
?>

Добавление новых свойств в объект

Добавить новые свойства в объекте можно с помощью команды:

1
$car2->Color = "баклажан";
Данная команда создаст в объекте $car2 новое свойство со значением. Однако данный способ (динамический) косвенно говорит о том, что при создании класса его структура была продумана не полностью.

Выполнить

Задание 1.Создайте класс Goods. Класс содержит свойства: имя товара, стоимость, количество на складе, артикул. Артикул — задайте область видимости private. Все остальные — public. Задайте значения по-умолчанию для свойств.
Создайте на основе класса Goods два объекта. Заполните их данными. Выведите на экран свойства объектов (public).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *