Использование ключевого слова ::class в PHP
![Использование ключевого слова ::class в PHP](/images/articles/php-class-name-resolution-keyword.png)
Если вы уже достаточно продолжительное время работаете с 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. Во-первых, ваша работа ускорится и повысится ее качество. Во-вторых, если вы видите что-то, что вы, не совсем понимаете, попробуйте это выяснить. Потратьте некоторое время и покопайтесь в своем фреймворке, проекте или просто языке программирования.
На этом все.
-
-
Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.