2015-03-01 9 views
5

बंद होने में new static (कक्षा static विधि में) PHP5.5 में new self के बराबर है, जबकि यह PHP5.6 में ठीक से बाध्य है?बंद होने में देर से स्थिर बाध्यकारी PHP5.5 बनाम 5.6

को देखते हुए:

abstract class Parent { 
    public function __construct($something) 
    { 
     $this->something = $something; 
    } 

    public static function make($array) 
    { 
     return array_map(function ($el) { 
      return new static($el); 
     }, $array); 
    } 
} 

class Child extends Parent { 

} 

तो

Child::make($someArray); 
// PHP5.5 FatalError: cannot instantiate abstract class Parent 
// PHP5.6 works fine, as expected 

5,5 में इस अपेक्षा के अनुरूप काम करेगा:

public static function make($array) 
{ 
    $child = get_called_class(); 

    return array_map(function ($el) use ($chlid) { 
     return new $child($el); 
    }, $array); 
} 

लेकिन क्यों हो रहा है? मुझे 5.6 में स्थिर बाध्यकारी परिवर्तनों से संबंधित php.net पर कोई उल्लेख नहीं मिला है।

उत्तर

3

this bug जैसा दिखता है, 5.5.14 में तय किया गया है।

+0

हाँ। और भी दिलचस्प बात यह है कि इसे 5.4.38 के माध्यम से पहले से ही [5.4.30] (http://3v4l.org/lk4i0#v5430) में तय कर दिया गया था, लेकिन स्पष्ट रूप से 5.5.0 में शामिल नहीं किया गया था। धन्यवाद –

+0

@JarekTkaczyk: php एक समय में कई शाखाओं का समर्थन करता है, इसलिए कोई भी 5.4। * आवश्यक रूप से 5.5 से पहले नहीं है। *। इस मामले में, 5.4.30 और 5.5.14 को उसी दिन [http://php.net/ChangeLog-5.php) जारी किया गया था। – georg

+0

निश्चित रूप से। मुझे रिलीज तिथियों के बारे में पता नहीं था :) –

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