2008-11-11 11 views
9

मान लिया जाये कि एक एक सार आधार वर्ग foo__get() के साथ परिभाषित है, और एक बच्चे के वर्ग bar जो एक निजी चर $var साथ foo से विरासत, जब निजी $var से पहुंचने का प्रयास कर माता पिता __get() बुलाया जाएगा कक्षा के बाहर?पीएचपी __get और निजी वर्ग चर

उत्तर

10

हां।

<?php 
    abstract class foo 
    { 
     public function __get($var) 
     { 
      echo "Parent (Foo) __get() called for $var\n"; 
     } 
    } 

    class bar extends foo 
    { 
     private $var; 
     public function __construct() 
     { 
      $this->var = "25\n"; 
     } 

     public function getVar() 
     { 
      return $this->var; 
     } 
    } 

    $obj = new bar(); 
    echo $obj->var; 
    echo $obj->getVar(); 
?> 

उत्पादन:

$ php test.php

जनक (फू) __get() वर

4

हाँ का आह्वान किया। __get() और __set() (और उस बात के लिए __call()) लागू कर रहे हैं जब एक डेटा सदस्य पहुँचा जा सकता है कि मौजूदा निष्पादन को दिखाई नहीं देता।

इस मामले में, $var निजी है, इसलिए इसे सार्वजनिक रूप से एक्सेस करने से __get() हुक आ जाएगा।

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