class a { |
public $attr2 = 'a' ; |
private $final_attr = '1' ; |
function __construct() { |
$vars = get_class_vars(get_class( $this )); |
foreach ( $vars as $k => $val ) { |
if ( substr ( $k ,0, strlen ( 'final_' )) == 'final_' ) continue ; |
$v = 'final_' . $k ; |
if (isset( $this -> $v )) { |
echo 'class : ' . get_class( $this ) . " Can't declare parent's attribute!" ; |
exit (); |
} |
} |
} |
function __set( $attr , $val ) { |
$v = 'final_' . $attr ; |
if (isset( $this -> $v )) { |
$this -> $v = $val ; |
} |
} |
function __get( $k ) { |
$v = 'final_' . $k ; |
if (isset( $this -> $v )) { |
return $this -> $v ; |
} |
} |
} |
class b extends a { |
public $attr = 'b' ; |
function __construct() { |
parent::__construct(); |
} |
} |
$a = new b(); |