2011-10-12 13 views
9

मैं त्रुटि हो रही है "अपरिभाषित चर: सी में अंतराल: \ WAMP \ www \ DGC \ वर्गों \ DateFilter.php"पीएचपी - निजी वर्ग चर त्रुटि है: अपरिभाषित चर

यहाँ DateFilter के लिए मेरे कोड है वर्ग:

class DateFilter extends Filter 
{ 
    //@param daysOld: how many days can be passed to be included in filter 
    //Ex. If daysOld = 7, everything that is less than a week old is included 
    private $interval; 

    public function DateFilter($daysOld) 
    { 
     echo 'days old' . $daysOld .'</ br>'; 
     $interval = new DateInterval('P'.$daysOld.'D'); 
    } 


    function test() 
    { 
     echo $interval->format("%d days old </br>"); 
     //echo 'bla'; 
    } 

} 

जब मैं DateFilter वर्ग और कॉल परीक्षण का एक नया उदाहरण create() यह मुझे त्रुटि दिखा सकते हैं। मुझे एहसास है कि इसका मतलब है कि चर शुरू नहीं किया गया है, लेकिन मुझे पता है कि कन्स्ट्रक्टर को बुलाया जा रहा है क्योंकि मैंने वहां एक गूंज बयान दिया था और यह आउटपुट था।

मैंने यह भी प्रयास किया है: $ यह $ $ अंतराल-> प्रारूप (...); स्वयं :: $ अंतराल-> प्रारूप (...); लेकिन यह काम नहीं किया।

मुझे पता है कि यह शायद एक आसान फिक्स है, नोब सवाल के लिए खेद है। विश्वास नहीं कर सकता कि यह मुझे फंस गया।

उत्तर

27

आपको PHP में सदस्य चर interval तक पहुंचने के लिए $this->interval का उपयोग करना होगा। PHP: The Basics

class DateFilter extends Filter 
{ 
    private $interval; // this is correct. 

    public function DateFilter($daysOld) 
    { 
     $this->interval = new DateInterval('P'.$daysOld.'D'); // fix this 
    } 

    function test() 
    { 
     echo $this->interval->format("%d days old </br>");  // and fix this 
    } 
} 
+0

यह $ echo -> $ अंतराल-> प्रारूप ("% d दिन पुराना
"); मुझे यह भी त्रुटि दे रहा है:/ – CHawk

+6

दूसरे डॉलर के चिह्न को हटा दें। यह $-- अंतराल –

+1

मुझे हमेशा "अजीब" लगता है कि PHP आपको ऑब्जेक्ट फ़ील्ड तक पहुंचने के लिए '$ this' का उपयोग करने के लिए मजबूर करता है। सी # जैसी कई अन्य भाषाएं नहीं होंगी (यदि परिवर्तनीय स्थानीय नाम का समान नाम नहीं है)। वैसे भी 'इस' का उपयोग हमेशा एक अच्छा अभ्यास है, IMHO: यह आपको ऑब्जेक्ट गुणों को त्वरित रूप से देखने और स्थानीय चर के साथ भ्रम से बचने में मदद करता है। – gremo

0

public var $interval; 

और

echo $this->interval; 
3

$interval कार्य करने के लिए स्थानीय है की कोशिश कर देखें। $this->interval आपकी निजी संपत्ति का संदर्भ देता है।

class DateFilter extends Filter 
{ 
    //@param daysOld: how many days can be passed to be included in filter 
    //Ex. If daysOld = 7, everything that is less than a week old is included 
    private $interval; 

    public function DateFilter($daysOld) 
    { 
     echo 'days old' . $daysOld .'</ br>'; 
     $this->interval = new DateInterval('P'.$daysOld.'D'); 
    } 


    function test() 
    { 
     echo $this->interval->format("%d days old </br>"); 
     //echo 'bla'; 
    } 

} 
+0

बिल्कुल सही, वह पहेली का आखिरी टुकड़ा था जिसे मैं याद कर रहा था। – CHawk

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