<?php
class User
{
public $name;
public $age;
}
$user = new User; // создаем объект нашего класса
$user->name = 'Коля'; // записываем имя в свойство name
$user->age = 25; // записываем возраст в свойство age
echo $user->name; // выводим записанное имя
echo $user->age; // выводим записанный возраст
?>
2 Методы
<?php
class User
{
public $name;
public $age;
// Создаем метод:
public function show()
{
return '!!!';
}
}
$user = new User;
$user->name = 'Коля';
$user->age = 25;
// Вызовем наш метод:
echo $user->show(); // выведет '!!!'
?>
3 $this
Для того, чтобы обратиться к свойству класса
внутри метода этого класса, вместо имени объекта следует
писать специальную переменную $this.
<?php
class User
{
public $name;
public $age;
public function show()
{
// Возвращаем имя:
return $this->name;
}
}
$user = new User; // создаем объект класса
$user->name = 'Коля'; // записываем имя
$user->age = 25; // записываем возраст
// Вызываем наш метод:
echo $user->show(); // выведет 'Коля'
?>
4 Модификаторы доступа public private
Ключевое слово public указывает на то, что данные свойства
и методы доступны извне (вне кода класса). В противоположность public есть
ключевое слово private, которое указывает на то, что свойства
и методы недоступны извне.
<?php
class User
{
private $name;
private $age;
}
$user = new User;
// Выдаст ошибку, так как свойство name - private:
$user->name = 'Коля';
?>
5 Конструкторы.
Конструктор - это такой же метод класса, но он позволяет
сделать так, чтобы поля объекта заполнялись при его создании - в этом
случае мы никак не сможем забыть задать значения этих полей.
<?php
class User
{
public $name;
public $age;
// Конструктор объекта:
public function __construct($name, $age)
{
// запишем данные в свойство name
$this->name = $name;
// запишем данные в свойство age
$this->age = $age;
}
}
// создадим объект, сразу заполнив его данными
$user = new User('Коля', 25);
echo $user->name; // выведет 'Коля'
echo $user->age; // выведет 25
?>
6 Геттеры и Сеттеры
<?php
class User
{
public $name;
private $age; // объявим возраст приватным
// Метод для чтения возраста юзера:
public function getAge()
{
return $this->age;
}
// Метод для изменения возраста юзера:
public function setAge($age)
{
// Проверим возраст на корректность:
if ($this->isAgeCorrect($age)) {
$this->age = $age;
}
}
// Метод для проверки возраста:
private function isAgeCorrect($age)
{
return $age >= 18 and $age <= 60;
}
}
$user = new User;
// Установим возраст:
$user->setAge(50);
// Прочитаем новый возраст:
echo $user->getAge(); // выведет 50
?>
7 Наследование классов
<?php
class User
{
private $name;
private $age;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
public function getAge()
{
return $this->age;
}
public function setAge($age)
{
$this->age = $age;
}
}
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
}
?>
8 Статические методы и Статические свойства
<?php
class Test
{
// Статический метод:
public static function method()
{
return '!!!';
}
}
// Чтобы обратиться к статистическому методу, не надо создавать объект
echo Test::method(); // выведет '!!!'
?>
Статистические свойства
<?php
class Test
{
// Статическое свойство:
public static $property;
}
Test::$property = 'test';
echo Test::$property; // выведет 'test'
?>
Класс , это чертеж, по которому сделали автомобиль
Автомобиль, сделанный по чертежу - это объект класса.
Структура синтаксиса:
<?php
class Car
{
// тут код, то есть PHP-чертеж автомобиля
}
?>
11 Абстрактные классы и интерфейсы
Абстрактные классы представляют собой классы, предназначенные для наследования от них. При этом объекты таких классов нельзя создать.
Объявление абстрактного класса:
<?php
abstract class User
{
}
?>
Абстрактные классы также могут содержать абстрактные методы.
Такие методы не должны иметь реализации, а нужны для того, чтобы указать, что такие методы должны быть у потомков.
Реализация абстрактного метода:
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
// Абстрактный метод без тела:
abstract public function increaseRevenue($value);
}
?>
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
abstract public function increaseRevenue($value);
}
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
}
?>
<?php
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
// Напишем реализацию метода:
public function increaseRevenue($value)
{
$this->salary = $this->salary + $value;
}
}
$employee = new Employee;
$employee->setName('Коля'); // установим имя
$employee->setSalary(1000); // установим зарплату
$employee->increaseRevenue(100); // увеличим зарплату
echo $employee->getSalary(); // выведет 1100
?>
13
Интерфейсы представляют собой классы, у которых все методы являются публичными и не имеющими реализации.
Пример итнерфейса:
<?php
interface Figure
{
public function getSquare();
public function getPerimeter();
}
?>
Интерфейс реализуется через служебное слово implements :
class Quadrate implements Figure
{
private $a;
public function __construct($a)
{
$this->a = $a;
}
public function getSquare()
{
return $this->a * $this->a;
}
public function getPerimeter()
{
return 4 * $this->a;
}
}
16 Полиморфизм
Полиморфизм — это способность обьекта использовать методы производного класса, который не существует на момент создания базового
17 Трейтыhttp://code.mu/ru/php/book/oop/traits/
Ранее мы уже проходили решение этой проблемы: вместо наследования использовать объекты одних классов внутри других.В PHP есть и другой способ. Он заключается в использовании трейтов.
Трейты подключаются через инструкцию use. и все его методы становятся доступными.
fgh
Tue, 01/26/2021 - 09:02
Permalink
ОПП
1 Cвойства
2 Методы
3 $this
4 Модификаторы доступа public private
5 Конструкторы.
6 Геттеры и Сеттеры
7 Наследование классов
8 Статические методы и Статические свойства
9 Переопределене метода
10 Классы и объекты.
Структура синтаксиса:
11 Абстрактные классы и интерфейсы
Абстрактные классы представляют собой классы, предназначенные для наследования от них. При этом объекты таких классов нельзя создать.
Объявление абстрактного класса:
Реализация абстрактного метода:
13
Пример итнерфейса:
Интерфейс реализуется через служебное слово implements :
14 Абстракция, инкапсуляция, наследование, полиморфизм
15 Магические методы http://code.mu/ru/php/book/oop/magic/__t...
16 Полиморфизм
Полиморфизм — это способность обьекта использовать методы производного класса, который не существует на момент создания базового
17 Трейты http://code.mu/ru/php/book/oop/traits/
Ранее мы уже проходили решение этой проблемы: вместо наследования использовать объекты одних классов внутри других.В PHP есть и другой способ. Он заключается в использовании трейтов.
Трейты подключаются через инструкцию use. и все его методы становятся доступными.
Источники:
1) http://code.mu/ru/php/book/oop/
https://habr.com/ru/post/37576/