Класс - заготовка,
Объект - задействованный класс
Класс образует структуру, состоящую из данных и операций, которые используются для посторения объектов.
Структура классов
Структура класса: объявление класса, имя, присвоенное классу, в фигурных скобках - определения элементов, составляющих класс.
<?php
class MyClass {
//Свойства и методы класса
}
?>
Создадим новый экземпляр класса и сохраним его в переменной
<?php $obj = new MyClass; ?>
Для просмотра содержания переменной используем функцию var_dump;
<?php var_dump($obj); ?>
Определение свойств класса
Для добавления данных в класс используют свойства - переменные, специфичные для данного класса. Свойства работают аналогично обычным переменным, но жестко связаны с объектом, поэтому для доступа к ним должен использоваться сам объект.
Присваивать значения свойствам класса не обязательно.
<?php
class MyClass {
public $prop1 = "Это свойство класса";
}
$obj = new MyClass;
var_dump($obj);
?>
Для доступа к свойствам и методам класса, принадлежащих данному объекту, используют ( -> )
<?php
class MyClass {
public $prop1 = "Это свойство класса";
}
$obj = new MyClass;
echo $obj -> prop1;
?>
В ООП объекты могут ссылаться на самих себя с помощью конструкции $this. Используется точно так же, как использовали бы имя объекта вне класса.
Методы - это функции, сспецифические для класса. Чтоб воспользоваться методом, его вызывают как обычную функцию с ссылкой на объект, которому метод принадлежит.
<?php
class MyClass {
public $prop1 = "Это свойство 1 класса MyClass.";
public function setProperty($newval) {
$this -> prop1 = $newval;
}
public function getProperty() {
return $this -> prop1."<br/>";
}
}
$obj = new MyClass;
//Получить значение свойства
echo $obj -> getProperty();
//Установить новое значение
$obj -> setProperty("Это новое свойство 1 класса MyClass.");
//Вновь прочитать свойство для демонстрации изменений
echo $obj -> getProperty();
?>
Пример с двумя новыми объектами одного класса
<?php
class MyClass {
public $prop = "Свойство класса MyClass";
public function setProperty($newval) {
$this -> prop = $newval;
}
public function getProperty() {
return $this -> prop."<br/>";
}
}
$obj1 = new MyClass;
$obj2 = new MyClass;
echo $obj1 -> getProperty();
echo $obj2 -> getProperty();
$obj1 -> setProperty('Новая переменная $obj1');
$obj2 -> setProperty('Новая переменная $obj2');
echo $obj1 -> getProperty();
echo $obj2 -> getProperty();
?>