Перейти к содержимому

Php class что это

  • автор:

Введение в классы и объекты в PHP

Сейчас мы с вами займемся изучением ООП в PHP. Давайте рассмотрим пример из жизни, а потом перенесем его на PHP.

В качестве примера возьмем автомобиль. У него есть колеса, цвет, вид кузова, объем двигателя и так далее. Кроме того, водитель может отдавать ему команды: ехать, остановится, повернуть направо, налево и тп.

Можно говорить о том, что существует некоторый автомобилей, обладающий общими свойствами (у всех есть колеса и всем им можно отдавать команды).

Конкретный автомобиль, стоящий на улице — это представитель этого класса, или, другими словами, этого класса. У всех объектов этого класса есть : количество колес, цвет, вид кузова и : ехать, остановится, повернуть направо, налево.

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

В PHP класс создается с помощью ключевого слова class , за которым следует название этого класса. Давайте сделаем класс Car :

Укажем теперь в нашем чертеже, что любой автомобиль, созданный по этому чертежу, будет иметь свойство для цвета и свойство для количества топлива.

Для этого внутри класса напишем свойство $color и свойство $fuel :

Давайте теперь сделаем методы нашего класса. В PHP методы, подобно обычным функциям, объявляются с помощью ключевого слова function , перед которым пишется ключевое слово public .

Как уже упоминалось выше, наш автомобиль может ехать, может поворачивать, может останавливаться. Сделаем соответствующие методы в нашем классе:

// Команда поворачивать: public function turn() < // какой-то PHP код >// Команда остановиться: public function stop() < // какой-то PHP код >> ?>

Мы с вами сделали чертеж нашего автомобиля. Теперь нужно отправится на завод и сделать объект этого класса (то есть конкретный автомобиль).

В PHP это делается с помощью ключевого слова new , после которого пишется имя класса:

Однако, если просто создать объект класса — это ни к чему не приведет (это все равно, что, к примеру, объявить массив и никуда его не записать). Нам нужна переменная для хранения этого объекта.

Пусть эта переменная будет называться $myCar — запишем в нее созданный нами объект:

После создания автомобиля можно обращаться к его свойствам. Обращение к ним происходит через стрелочку -> . Давайте установим свойства нашего объекта:

color = ‘red’; // красим в красный цвет $myCar->fuel = 50; // заливаем топливо ?>

Все, наш автомобиль создан, покрашен и заправлен. Теперь мы можем отдавать ему команды через методы этого автомобиля.

Обращение к методам также происходит через стрелочку, но, в отличие от свойства, после имени метода следует писать круглые скобки. Давайте покомандуем нашим объектом:

go(); // автомодиль->едь $myCar->turn(); // автомодиль->поверни $myCar->stop(); // автомодиль->остановись ?>

Что такое class в PHP?

Ключевое слово class в языке программирования PHP используется для определения и создания классов. Классы являются основным строительным блоком объектно-ориентированного программирования (ООП) в PHP. Они предоставляют структуру для организации данных и функций в логическую единицу, называемую объектом.

brand = $brand; $this->model = $model; $this->color = $color; > // Метод для отображения информации о машине public function displayInfo() < echo "Brand: brand>\n"; echo "Model: model>\n"; echo "Color: color>\n"; > > // Создание объекта класса Car $myCar = new Car("Toyota", "Camry", "Blue"); // Доступ к свойствам и методам объекта echo "My Car Information:\n"; $myCar->displayInfo(); ?>

Классы — PHP: Введение в ООП

Аналогом структур из Си в PHP являются классы (как вы увидите позже, классы устроены намного сложнее). По крайней мере, в первом приближении.

 // Обратите внимание на стиль, где ставятся открывающие и закрывающие скобки: class Point  public $x; public $y; > 

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

Одно из отличий классов от структур связано с наличием встроенного механизма защиты данных. Ключевое слово public делает свойства публичными, то есть доступными снаружи для чтения и модификации. Это поведение аналогично тому, как ведут себя элементы структур. Кроме public есть и другие варианты, но мы их рассмотрим позже, когда поговорим об инкапсуляции и методах.

Определив класс, можно начать создавать объекты или, как их ещё называют, экземпляры (instance) класса. На текущий момент достаточно рассматривать объект как конкретную структуру данных с конкретными данными.

 // Создаём объект класса Point $point = new Point(); // По умолчанию значения равны null print_r($point->x); // => null print_r($point->y); // => null // Обратите внимание на синтаксис. Такой вызов неверный: $point->$x. $point->x = 5; $point->y = 10; print_r($point->x); // => 5 print_r($point->y); // => 10 

Создание объекта выглядит как вызов функции, к которому добавили ключевое слово new , и как вы увидите позже, это так и есть. В остальном всё работает, как и в структурах, только для разделения используется не точка, а стрелка. При обращении к свойствам знак $ перед именем свойства не ставится.

Попробуйте создать данный класс на replit.com. Создайте несколько экземпляров, распечатайте их, измените свойства.

Если распечатать объект на экран print_r($point) , то можно увидеть его структуру и значения всех свойств.

 5 [y] => 10 ) 

Классы как рекурсивная структура данных

Как и в случае со структурами, значением свойства объекта может быть другой объект. Ограничений на вложенность никаких нет: объекты, содержащие объекты, которые содержат объекты — это нормально.

 class Circle  public $center; public $radius; > $circle = new Circle(); $circle->radius = 3; $circle->center = new Point(); $circle->center->x = 5; $circle->center->y = 10; print_r($circle->center->x); // => 5 print_r($circle->radius); // => 3 

Типы данных

В PHP около 10 встроенных типов данных, с большинством которых мы уже знакомы, например со строками или массивами. Объекты в этом списке представлены типом object .

 gettype($circle); // object gettype($point); // object 

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

 function showUser(User $user)  // . > 

Такое определение вызовет ошибку при передаче в функцию любых посторонних данных.

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Классы в PHP — введение

Впервые базовая поддержка классов в PHP была введена в 4 версии языка, но затем для более полной поддержки ООП повторно реализована для 5 версии. Сегодня PHP пригоден для работы с классами, но в то же время библиотека языка до сих пор в основном состоит из функций, классы теперь добавляются в различных целях. Тем не менее, основным средством PHP является использование своих собственных классов.

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

Обновлено: 2021-01-08 16:51:08 Вадим Дворников автор материала

Классы в PHP — определение и использование

После введения в классы в PHP мы готовы написать наш собственный класс. Он будет содержать информацию об основном пользователе, например, вашего сайта.

Определение класса в PHP выглядит так же, как объявление функции, но вместо function , используется ключевое слово class . Давайте начнем с наброска нашего PHP class User :

На данный момент этот класс PHP ничего не может сделать. Мы можем создать экземпляр, это делается с помощью ключевого слова new :

$user = new User();

Но так как этот класс ничего не может делать, объект $user также бесполезен. Давайте исправим это, добавив пару переменных класса и метод:

class User < public $name; public $age; public function Describe() < return $this->name . " is " . $this->age . " years old"; > >

В примере класса в php мы объявляем две переменные класса — name и age . Переменная name снабжена спецификатором доступа » public «, который означает, что к переменной можно получить доступ за пределами класса.

Далее мы объявляем функцию Describe() . Это выглядит точно так же, как объявление обычной функции, но с несколькими отличиями. Перед объявлением ставится ключевое слово public , чтобы указать спецификатор доступа. Внутри функции мы используем переменную » $this «, чтобы получить доступ к переменным самого класса. $this — специальная переменная в PHP , которая доступна в функциях класса и всегда ссылается на объект, из которого она используется.

Попробуем использовать наш новый класс php. Следующий код должен идти после того, как класс был объявлен или подключен:

$user = new User(); $user->name = "John Doe"; $user->age = 42; echo $user->Describe();

Первое, на что вы должны обратить внимание, это использование оператора — > . Мы также использовали его в методе Describe() . Это означает, что мы хотим получить доступ к чему-то из объекта, указанного перед оператором. $user->name означает: » Дайте мне переменную name из объекта $user «. После этого идет то же самое, что и присвоение значения обычной переменной, к которой мы дважды обращались для получения имени и возраста объекта пользователя. В последней строке мы вызываем метод Describe() объекта пользователя, который будет возвращать строку, которую мы затем выводим.

Результат должен выглядеть следующим образом:

John Doe 42 лет

Поздравляем, вы только что определили и использовали свой первый класс в php .

Конструкторы и деструкторы

Конструктор и деструктор — специальные функции, которые автоматически вызываются, когда объект создается и уничтожается. Из них наиболее полезным является конструктор, потому что позволяет при создании нового объекта передавать ему параметры, которые затем используются для инициализации переменных объекта. Вот пример класса с простым конструктором:

class Animal < public $name = "No-name animal"; public function __construct() < echo "I'm alive!"; >>

Конструктор выглядит как обычная функция, за исключением того, что начинается с двух символов нижнего подчеркивания. В PHP так указывается волшебная функция, которая обладает дополнительной функциональностью по сравнению с обычными функциями. Таким образом, функция типа » __construct «, является конструктором класса и будет вызываться автоматически при создании объекта. Давайте попробуем сделать это в следующем PHP class примере:

$animal = new Animal();

С помощью этой строки кода будет создан объект, вызван конструктор и в нем выполнится код, что приведет к выводу строки “ I’m alive! ”. Но как уже упоминалось ранее, основным преимуществом конструктора является возможность передавать параметры, которые могут быть использованы для инициализации переменных – членов класса.

Давайте попробуем сделать это:

name = $name; > > $animal = new Animal("Bob the Dog"); echo $animal->name; ?>

Объявление конструктора с параметрами такое же, как объявление функции, и передача параметров очень похожа на вызов обычной функции, но с ключевым словом “ new ”. Конструктор может иметь столько параметров, сколько вам хочется.

Деструкторы

Деструктор вызывается при уничтожении объекта. В некоторых языках программирования нужно вручную избавиться от созданных объектов, но в PHP это делает сборщик мусора, который следит за объектами и автоматически уничтожает их, когда они больше не нужны. Посмотрите на следующий пример, который является расширенной версией предыдущего PHP class :

name = $name; > public function __destruct() < echo "I'm dead now :("; >> $animal = new Animal("Bob"); echo "Name of the animal: " . $animal->name; ?>

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *