Недавно я столкнулся с классом, который использует инструкцию use
внутри определения класса.
Может кто-нибудь объяснить, что именно он делает, поскольку я не могу найти никакой информации об этом.
Я понимаю, что это может быть способ убрать его из глобальной области данного файла, но возможно ли это, что данный класс наследует и от нескольких родительских классов, – так как extends
разрешает только одну ссылку на родительский класс?
Пример, который я видел, был в модели User оригинальной установки Laravel:
<?php use Illuminate\Auth\UserTrait; use Illuminate\Auth\UserInterface; use Illuminate\Auth\Reminders\RemindableTrait; use Illuminate\Auth\Reminders\RemindableInterface; class User extends Eloquent implements UserInterface, RemindableInterface { use UserTrait, RemindableTrait; /** * The database table used by the model. * * @var string */ protected $table = 'users'; /** * The attributes excluded from the model's JSON form. * * @var array */ protected $hidden = array('password', 'remember_token'); }
и я видел некоторые примеры этой модели, на самом деле использующие методы, включенные в класс UserTrait
– следовательно, мое подозрение, но хотелось бы узнать больше о значении прилагаемых операторов use
.
Документация PHP говорит:
Ключевое слово use должно быть объявлено в самой внешней области файла (глобальной области) или внутри декларации пространства имен. Это связано с тем, что импорт выполняется во время компиляции, а не во время выполнения, поэтому его нельзя блокировать. В следующем примере показано незаконное использование ключевого слова use:
а затем пример:
namespace Languages; class Greenlandic { use Languages\Danish; ... }
что указывает на неправильное use
ключевого слова use
– любые подсказки?
они называются признаками, которые используются с использованием инструкции «use», которая включена в php 5 oop, и они являются единичным наследованием для более подробной проверки