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

Использование ключевого слова ::class в PHP

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

При работе с пространствами имен в PHP, часто приходится писать полные имена классов. Особенно это проявляется при работе с современными MVC фреймворками, которые вовсю используют новомодные фишки PHP. Давайте посмотрим на реальный пример.

Ключевое слово класс ::class

Начиная с PHP версии 5.5 ключевое слово ::class используется для разрешения имени класса. Это означает, что оно возвращает полное имя класса, что особенно полезно, при работе с длинными именами классов. Посмотрим на пример:

<?php

class Controller {

}

echo Controller::class; // возвращает имя класса Controller

namespace App\Controllers;

class Controller {

}
echo User::class; // возвращает App\Controllers\Controller

Реальные примеры применения

Как работает ключевое слово ::class мы увидели. Но где оно может быть применено? Есть несколько случаев, где это ключевое слово может быть полезно. Если вы поищете этого ключевое слово во фреймворке Laravel, вы получите сотни результатов.

Давайте посмотрим, как это ключевое слово может быть применено:

<?php

namespace App\Models;


use Illuminate\Database\Eloquent\Model;

class Phone extends Model
{
    /**
       Получаем пользователя которому принадлежит телефон
    */

    public function user() {
        return $this->belongsTo('App\Models\User');
    }

}

Здесь нам необходимо передать имя класса в метод belongsTo. Здесь-то мы и можем использовать ключевое слово ::class.

<?php

  return $this->belongsTo(User::class);

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

Заключение

Когда это уместно, используйте ключевое слово class. Во-первых, ваша работа ускорится и повысится ее качество. Во-вторых, если вы видите что-то, что вы, не совсем понимаете, попробуйте это выяснить. Потратьте некоторое время и покопайтесь в своем фреймворке, проекте или просто языке программирования.

На этом все.