Работа с объектами в PHP. Как создать экземпляр ранее определенного класса?

работа с объектами в php. как создать экземпляр ранее определенного класса?

Создание объекта

Классы – это шаблоны, на базе которых создаются объекты. Объекты также называют экземплярами классов. Оба этих понятия равнозначны. Для пояснения принципа работы приведем абстрактный пример. Допустим, у вас есть чертеж приемника. Вы не можете заставить его ловить радиоволну и воспроизводить музыку. Для этого нужно собрать радио. В данном случае чертеж — это класс, а собранное радио — это объект.

В PHP для создания объекта используется ключевое слово new. В общем виде выражение можно записать как «$имя_переменной = new ИмяКласса(/* список параметров */);». Обратите внимание, мы добавляем созданный экземпляр в переменную для дальнейшего использования.

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

//Определение класса радиоприемника
class Radio
{
    //Метод воспроизведения музыки
    public function playMusic()
    {
        echo 'do do hast do hast...';
    }
}

//Создание экземпляра радиоприемника
$Radio = new Radio();
$Radio->playMusic();
/*
* Результат:
* do do hast do hast...
*/

Пример, приведенный выше, демонстрирует создание экземпляра класса Radio, в котором определён один метод palyMusic(). При вызове этого метода выполнится команда «воспроизведение музыки» (вывод строки в браузер).

Работа с объектами

Для доступа к свойствам или вызова методов объекта используется набор символов «->». Значение свойства можно переопределить с помощью следующего выражения «$переменная_объекта->имяСвойства = новое_значение;». Обратите внимание, имя свойства указывается без символа «$». Если вы укажите его, то PHP попытается найти переменную с таким именем, взять её значение и использовать как имя свойства.

//Определение класса кошки, который имеет одно
//свойство, описывающее породу
class Cat
{
    //Устанавливается порода по умолчанию
    public $breed = 'Сиамская';
}

//Создание объекта кошки
$SiamCat = new Cat();
echo $SiamCat->breed .'<br>'; //Результат: Сиамская

//Переопределяем породу
$SiamCat->breed = 'Мейнкун';
echo $SiamCat->breed .'<br>'; //Результат: Мейнкун

//Создаем строковую переменную, содержащую имя
//свойства. Значение этой переменной используется
//для доступа к свойству объекта
$string = 'breed';
echo $SiamCat->$string .'<br>'; //Результат: Мейнкун

Чтобы вызвать метод необходимо использовать выражение «$переменная_объекта->имяМетода(/* список параметров */);». Синтаксис схож с аналогичным действием функции. Метод, как и функция, может принимать параметры и возвращать результат.

//Определение класса светофора, содержащего
//метод вывода строки в браузер
class TrafficLight
{
    //В метод можно передать название цвета,
    //согласно которому осуществляется вывод
    public function showAction($color)
    {
        switch($color) {
            case 'красный':
                echo 'Стойте и ждите<br>';
                break;
            case 'желтый':
                echo 'Приготовьтесь<br>';
                break;
            case 'зеленый':
                echo 'Можете идти<br>';
                break;
        }
    }
}

//Создание сфетофора и вызовы его метода
$TraficLight = new TrafficLight();
$TraficLight->showAction('зеленый');
//Результат: Можете идти

$TraficLight->showAction('красный');
//Результат: Стойте и ждите

Работая с объектами в PHP, нужно понять одну особенность. Как говорилось ранее, объект создается по шаблону класса. После этого он становится самостоятельной единицей. Переопределение свойства одного объекта не затрагивает состояние свойств других объектов, созданных от того же класса.

//Определяем класс, содержащий одно свойство,
//определяющее название цвета
class Color
{
    public $colorName = 'Фиолетовый';
}

//Создаем два объета на основе класса цвета
$firstColor = new Color();
$secondColor = new Color();

//Выводим значения их свойств на экран
echo $firstColor->colorName .'<br>'; //Результат: фиолетовый
echo $secondColor->colorName.'<br>'; //Результат: фиолетовый

//Переопределяем свойство второго цвета
//и снова выводим на экран
$secondColor->colorName = 'Оранжевый';
echo $firstColor->colorName .'<br>'; //Результат: фиолетовый
echo $secondColor->colorName .'<br>'; //Результат: Оранжевый

Заметка
Не все свойства экземпляра класса могут быть доступны для редактирования или чтения. Поведение свойства декларируется с помощью модификаторов, которые задаются при определении класса. Модификаторы будут рассмотрены в следующих статьях этого учебного курса.

Последние публикации