PHP : utilisation à l'intérieur de la définition de la classe

Récemment je suis tombé sur une classe qui utilise use déclaration à l'intérieur de la définition de la classe.

Quelqu'un pourrait-il expliquer ce qu'est exactement cela - que je ne trouve aucune information à ce sujet.

Je comprends que ça peut être un moyen de se déplacer, il se forme une portée globale de la donnée de fichier, mais ce n'est peut-être permettre à la classe d'hériter de plusieurs classes parent ainsi - depuis extends permet uniquement d'un parent de la classe de référence?

L'exemple que j'ai vu était dans le modèle de l'Utilisateur de l'installation d'origine de 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');

}

et j'ai vu quelques exemples de ce modèle se fait à l'aide de méthodes incluses dans la UserTrait classe - d'où mes doutes, mais aimerait vraiment en savoir plus sur le sens de la ci-joint use consolidés.

La documentation PHP dit:

L'utilisation des mots clés doit être déclarée à l'extérieur de la portée d'un fichier (le
de portée mondiale) ou à l'intérieur de déclarations d'espace de noms. C'est parce que l'
importation est effectuée au moment de la compilation et non pas de l'exécution, de sorte qu'il ne peut pas être
bloc d'étendue. L'exemple suivant illustre une utilisation illégale de la
utilisation de mots clés:

suivie par l'exemple:

namespace Languages;

class Greenlandic
{
    use Languages\Danish;

    ...
}

qui indique que c'est une utilisation incorrecte de la use mot-clé - des indices?

  • Si il peut facilement être répondu alors le point de moi de cet exemple -ne vous contentez pas downvote sans réellement donner la réponse!
  • php.net/manual/en/language.oop5.traits.php
  • Et c'est précisément ce que je pensais - l'héritage multiple - 'Un Trait vise à réduire certaines limites de l'héritage simple, en permettant à un développeur de réutilisation des ensembles de méthodes librement dans plusieurs classes indépendantes de vie dans les différentes hiérarchies de classes.' - était-il vraiment si difficile? - oh et merci pour le lien!
  • C'est vraiment pas l'héritage multiple, c'est plus proche de mixin.
  • Compris - bien que fonctionnellement, il permet à l'héritage de méthodes supplémentaires - même avec la même écraser mécanisme.