Php примеры использования классов

Примеры

В приведённом ниже примере, мы сначала определим базовый класс и класс его наследующий. Базовый класс описывает овощ: съедобен ли он и какого цвета. Дочерний класс Spinach добавляет метод приготовления овоща и проверки, был ли он уже приготовлен.

Пример #1 Определения классов

class Vegetable public $edible ;

public function __construct ( $edible , $color = «green» )
$this -> edible = $edible ;
$this -> color = $color ;
>

public function isEdible ()
return $this -> edible ;
>

public function getColor ()
return $this -> color ;
>
>

class Spinach extends Vegetable public $cooked = false ;

public function __construct ()
parent :: __construct ( true , «green» );
>

public function cook ()
$this -> cooked = true ;
>

public function isCooked ()
return $this -> cooked ;
>
>

Теперь мы создадим по объекту каждого класса и распечатаем информацию о них, включая порядок их наследования. Также мы объявим несколько функций-утилит, главным образом для удобного вывода результатов.

Пример #2 test_script.php

// зарегистрировать автозагрузчик для загрузки классов
spl_autoload_register ();

function printProperties ( $obj )
foreach ( get_object_vars ( $obj ) as $prop => $val ) echo «\t $prop = $val \n» ;
>
>

function printMethods ( $obj )
$arr = get_class_methods ( get_class ( $obj ));
foreach ( $arr as $method ) echo «\tфункция $method ()\n» ;
>
>

function objectBelongsTo ( $obj , $class )
if ( is_subclass_of ( $obj , $class )) echo «Объект принадлежит к классу » . get_class ( $obj );
echo «, подкласс $class \n» ;
> else echo «Объект не принадлежит к подклассу $class \n» ;
>
>

// создание 2 объектов
$veggie = new Vegetable ( true , «blue» );
$leafy = new Spinach ();

// вывод информации об объектах
echo «вегетарианский: CLASS » . get_class ( $veggie ) . «\n» ;
echo «листовой: CLASS » . get_class ( $leafy );
echo «, PARENT » . get_parent_class ( $leafy ) . «\n» ;

// показать вегетарианские свойства
echo «\nвегетарианский: Свойства\n» ;
printProperties ( $veggie );

// и листовые методы
echo «\nleafy: Методы\n» ;
printMethods ( $leafy );

echo «\nПроисхождение:\n» ;
objectBelongsTo ( $leafy , Spinach ::class);
objectBelongsTo ( $leafy , Vegetable ::class);

Результат выполнения данных примеров:

вегетарианский: CLASS Vegetable листовой: CLASS Spinach, PARENT Vegetable вегетарианский: Свойства edible = 1 color = blue листовой: Методы function __construct() function cook() function isCooked() function isEdible() function getColor() Происхождение: Объект не принадлежит к подклассу Spinach Объект принадлежит к классу Spinach, подкласс Vegetable

Важно заметить, что, в приведённом выше примере, объект $leafy — экземпляр класса Spinach , который наследует класс Vegetable .

User Contributed Notes

Источник

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

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

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

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

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

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

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

Но так как этот класс ничего не может делать, объект $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() объекта пользователя, который будет возвращать строку, которую мы затем выводим.

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

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

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

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

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

С помощью этой строки кода будет создан объект, вызван конструктор и в нем выполнится код, что приведет к выводу строки “ 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; ?>

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

Источник

Читайте также:  Php cs fixer install
Оцените статью