2014-09-27 2 views
35

최근 클래스 정의 안에서 use 문을 사용하는 클래스를 발견했습니다.PHP : 'use'in class definition

누군가가 정확히 무엇을하는지 설명 할 수 있습니까? 내가 그것에 대해 어떤 정보도 찾을 수 없기 때문입니다.

주어진 파일의 전역 범위에서 멀리 이동하는 방법 일 수 있지만 이해할 수 있습니다. extends은 하나의 부모 클래스 참조 만 허용하므로 여러 클래스로부터 상속받을 수 있습니다. , 그래서 내 의심을 -

<?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 클래스 내에서 방법을 포함하여이 모델의 몇 가지 예를 본 적이 : 내가 본

예는 Laravel의 원래 설치의 사용자 모델에 있었다 동봉 한 use 문장의 의미에 대해 더 자세히 알고 싶습니다.

PHP documentation는 말한다 :

사용 키워드 파일합니다 ( 전역) 또는 네임 스페이스 선언 내부의 가장 바깥 쪽 범위에 선언해야합니다. 이는 가져 오기가 런타임이 아닌 컴파일 타임에 완료되므로 블록 범위가 될 수 없기 때문입니다.

예 다음 : - 단서

namespace Languages; 

class Greenlandic 
{ 
    use Languages\Danish; 

    ... 
} 

use 키워드의 잘못된 사용이 있음을 나타냅니다 다음은 사용 키워드의 불법 사용을 보여줍니다?

+0

을 다음 체크 PHP 5 OOP에 포함되어 문을 '사용'그들이 자세한 내용은 단일 상속 있습니다 사용하여 사용되는 특성이라고 그 예제에 - 실제로 대답을주지 않고 그냥 downvote하지 마라! –

+0

http://php.net/manual/en/language.oop5.traits.php – GordonM

+0

정확하게 생각한 것은 다중 상속입니다. '특성은 개발자가 세트를 재사용 할 수있게함으로써 단일 상속의 한계를 줄이기위한 것입니다 다른 클래스 계급에 살고있는 여러 개의 독립적 인 클래스에서 자유롭게 메소드를 사용할 수 있습니다. ' - 정말 그렇게 힘들었 니? - 오 - 그리고 링크에 감사드립니다! –

답변