2008-11-11 37 views
9

Giả sử ta có một lớp cơ sở trừu tượng foo với __get() xác định, và một lớp con bar mà kế thừa từ foo với một biến tin $var, sẽ phụ huynh __get() được gọi khi cố gắng truy cập các tin $var từ bên ngoài lớp học?PHP __get và lớp Private biến

Trả lời

10

Có.

<?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(); 
?> 

đầu ra:

$ php test.php

Chánh (Foo) __get() kêu gọi var

4

Yes. __get()__set() (và __call() cho vấn đề đó) được gọi khi một thành viên dữ liệu được truy cập không hiển thị với thực thi hiện tại.

Trong trường hợp này, $var là riêng tư, vì vậy, truy cập công khai sẽ gọi móc __get().

Các vấn đề liên quan