PHP ООП - Классы и объекты
Класс является шаблоном для объектов, а объект является экземпляром класса.
ООП Кейс
Пусть у нас есть класс с именем Fruit. У Fruit могут быть такие свойства, как имя, цвет, вес и т.д. Мы можем определить такие переменные, как $name, $color и $weight, чтобы хранить значения этих свойств.
Когда создаются отдельные объекты (apple, banana и т.д.), они наследуют все свойства и поведение класса, но каждый объект будет иметь разные значения для свойств.
Определение класса
Класс определяется с помощью ключевого слова class
, за которым следует имя класса и пара фигурных скобок ({}). Все его свойства и методы заключаются в фигурные скобки:
Синтаксис
<?php
class Fruit {
// здесь идёт код...
}
?>
Ниже мы объявляем класс с именем Fruit, состоящий из двух свойств ($name и $color) и двух методов set_name() и get_name() для установки и получения свойства $name:
Пример
<?php
class Fruit {
// Свойства
public
$name;
public $color;
// Методы
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
Попробуйте сами »
Примечание: В классе переменные называются свойствами, а функции - методами!
Определение объектов
Классы ничто без объектов! Мы можем создать несколько объектов из класса. Каждый объект имеет все свойства и методы, определенные в классе, но они будут иметь разные значения свойств.
Объекты класса создаются с помощью ключевого слова new
.
В приведенном ниже примере $apple и $banana являются экземплярами класса Fruit:
Пример
<?php
class Fruit {
// Свойства
public
$name;
public $color;
// Методы
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
Попробуйте сами »
В приведенном ниже примере мы добавляем ещё два метода к классу Fruit для установки и получения свойства $color:
Пример
<?php
class Fruit {
// Свойства
public $name;
public $color;
// Методы
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
Попробуйте сами »
PHP - Ключевое слово $this
Ключевое слово $this ссылается на текущий объект и доступно только внутри методов.
Посмотрите на следующий пример:
Пример
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
Где мы можем изменить значение свойства $name? Есть два способа:
1. Внутри класса (добавив метод set_name() и используя $this):
Пример
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
?>
Попробуйте сами »
2. Вне класса (путем непосредственного изменения значения свойства):
Пример
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
?>
Попробуйте сами »
PHP - Ключевое слово instanceof
Вы можете использовать ключевое слово instanceof
чтобы проверить, принадлежит ли объект определенному классу: