Загрузка...

Введение в классы PHP.

Тема в разделе Backend создана пользователем Hangman666 18 июн 2016. 269 просмотров

Загрузка...
  1. Hangman666
    Hangman666 Автор темы 18 июн 2016 Хранитель Идей 342 10 мар 2016
    Определение и использование класса

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

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

    Код
    <?php
    class User
    {

    }
    ?>

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

    Код

    $user = new User();
    ?>

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

    Код

    class User
    {
    public $name;
    public $age;

    public function Describe()
    {
    return $this->name . " is " . $this->age . " years old";
    }
    }

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

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

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

    Код

    $user = new User();
    $user->name = "Алексей";
    $user->age = 42;
    echo $user->Describe();

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

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

    Алексей 42 года.
    Поздравляем, вы только что определили и использовали свой первый PHP class.

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

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


    Код

    class Animal
    {
    public $name = "No-name animal";

    public function __construct()
    {
    echo "I'm alive!";
    }
    }

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

    Код

    $animal = new Animal();

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

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

    Код

    <?php
    class Animal
    {
    public $name = "No-name animal";

    public function __construct($name)
    {
    $this->name = $name;
    }
    }

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

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


    Деструкторы

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

    Код

    <?php
    class Animal
    {
    public $name = "No-name animal";

    public function __construct($name)
    {
    echo "I'm alive!";
    $this->name = $name;
    }

    public function __destruct()
    {
    echo "I'm dead now :(";
    }
    }

    $animal = new Animal("Bob");
    echo "Name of the animal: " . $animal->name;
    ?>

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