2014-09-27 8 views
35

के अंदर 'उपयोग' हाल ही में मैं कक्षा में आया जो कक्षा परिभाषा के अंदर use कथन का उपयोग करता है।PHP: वर्ग परिभाषा

क्या कोई यह समझा सकता है कि यह वास्तव में क्या करता है - क्योंकि मुझे इसके बारे में कोई जानकारी नहीं मिल रही है।

मैं समझता हूं कि यह इसे दिए गए फ़ाइल के वैश्विक दायरे के रूप में दूर करने का एक तरीका हो सकता है, लेकिन क्या यह संभवतः दिए गए वर्ग को कई अभिभावक वर्गों से प्राप्त करने की अनुमति देता है - extends केवल एक अभिभावक वर्ग संदर्भ की अनुमति देता है?

उदाहरण मैंने देखा 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 documentation का कहना है:

उपयोग कीवर्ड एक फ़ाइल ( वैश्विक क्षेत्र) या नाम स्थान घोषणाओं के अंदर की सबसे बाहरी दायरे में घोषित किया जाना चाहिए। ऐसा इसलिए है क्योंकि आयात संकलन समय पर नहीं किया जाता है और रनटाइम नहीं होता है, इसलिए यह ब्लॉक स्कॉप्ड नहीं हो सकता है।

उदाहरण दिया गया है: - किसी भी सुराग

namespace Languages; 

class Greenlandic 
{ 
    use Languages\Danish; 

    ... 
} 

जो संकेत मिलता है कि यह use कीवर्ड का गलत इस्तेमाल होता है निम्न उदाहरण उपयोग कीवर्ड के अवैध उपयोग दिखाई देगा?

+0

कहा जाता है यह आसानी से तो जवाब दिया जा सकता है, तो मुझे बात उस उदाहरण के लिए - वास्तव में उत्तर देने के बिना बस डाउनवोट न करें! –

+0

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

+0

तो यह वही है जो मैंने सोचा - एकाधिक विरासत - 'एक विशेषता का उद्देश्य एकल विरासत की कुछ सीमाओं को कम करने के लिए डेवलपर को सेट का पुन: उपयोग करने में सक्षम बनाता है विभिन्न वर्ग पदानुक्रमों में रहने वाले कई स्वतंत्र वर्गों में स्वतंत्र रूप से विधियों का। ' - क्या यह वाकई मुश्किल था? - ओह - और लिंक के लिए धन्यवाद! –

उत्तर

25

वे विशेषता है जो बयान दिया जिसमें php 5 OOP में शामिल है 'का उपयोग' और वे अधिक जानकारी के लिए एक inheritence उपयोग कर रहे हैं इस्तेमाल किया निम्नलिखित की जाँच

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

+1

मैं इस उत्तर को स्वीकार करूंगा - हालांकि सटीक होना - उन्हें संस्करण 5.4 से PHP में जोड़ा गया है। –

संबंधित मुद्दे