Учимся создавать фундаментальную для PHP вещь — класс.
Класс по сути это шаблон и фабрика по созданию объектов. Класс (class) состоит из следующих частей: Свойства (объектов), Конструктор (объектов), Методы (изменения свойств объектов).
Статья основана на материалах сайта myrusakov.ru
Создаем класс и свойства
Создаем файл под названием myclass.php и в нем начинаем прописывать класс.
class MyClass {
public $x;
public $y;
const pi = 3.1415926;
}
Мы создали новый класс (MyClass) и 3 свойства (свойства иногда еще называют полями).
const pi — константа (pi). Перед название константы знак $ не ставиться.
Создаем конструктор и методы
class MyClass {
public $x;
public $y;
const pi = 3.1415926;
public function __construct($x, $y) {
$this->x = $x;
$this->y = $y;
echo "Был создан объект с параметрами: $x и $y";
}
function sum() {
$sum = $this->x + $this->y;
return $sum;
}
function getPI() {
return self::pi;
}
}
Конструктор (__construct) — это функция которой мы можем передавать свойства, а также внутри нее делать все как в обычной функции.
$this->name — синтаксис обращения к свойству.
Добавлено два метода: сумма свойств и вывод константы pi. В методе суммы создаем переменную $sum и после возвращаем её (return). Во втором методе возвращаем константу (синтаксис при обращении к константе внутри класса self::name).
Применение класса
Создаем новый файл со следующим содержимым (естественно этот и предыдущий файлы должны быть заключены в <?php ?>):
require_once "myclass.php";
$myobj = new MyClass(15, 17);
echo $myobj->x;
echo $myobj->y;
echo MyClass::pi;
echo $myobj->sum();
echo $myobj->getPI();
require_once «myclass.php»; — подключаем класс (если класс прописан не в отдельном файле, а например в functions.php, то подключать его не нужно).
$myobj = new MyClass(15, 17); — создаем новый объект
echo $myobj->x; — выводим свойство объекта
echo MyClass::pi; — выводим константу
echo $myobj->sum(); — применяем и выводим метод
Наследование классов PHP
Мы можем создавать подклассы которые будут наследовать свойства, конструктор и методы родительского класса (Суперкласса).
class Auto extends Car — указание на родительский класс при создании подкласса.
Абстрактный класс (abstract)
Вид класса когда мы описываем не что-то конкретное, а неопределенное. Из абстрактного класса невозможно создать объекты, а только дочерние классы. Также в абстрактном классе можно создать абстрактные методы.
Модификаторы доступа PHP
- public — элемент доступен за пределами класса
- protected — элемент доступен в пределах класса и его наследниках
- private — элемент доступен только в пределах данного класса
Эти модификаторы является являются одним из краеугольных камней ООП (Объектно-ориентированное программирование) — Инкапсулированием (наряду с Наследованием и Полиморфизмом).
Если в родительском классе мы сделали закрытое свойство protected $x; то в этом же классе мы можем создать методы get (получить) и set (изменить)
abstract class Car {
protected $x;
protected $y;
public function __construct($x, $y) {
$this->x = $x;
$this->y = $y;
}
public function getX() {
return $this->x;
}
public function getY() {
return $this->y;
}
public function setX($x) {
$this->x = $x;
}
public function setY($y) {
$this->y = $y;
}
}
т.е. получается так, что свойства закрыты, но есть public методы позволяющие их вызывать и изменять.
[site-socialshare]