Posted: Thu Aug 24, 2006 2:26 pm
You could always extend the class and redeclare the property/method public.
A community of PHP developers offering assistance, advice, discussion, and friendship.
http://forums.devnetwork.net/
Well yes a friend class would be a lot better.volka wrote:Yes, but the question remains: why? What is its purpose?
Changing the classes behaviour for testing? Not such a good idea.
There would make for quite a lot of classes.You could always extend the class and redeclare the property/method public.
Code: Select all
[feyd@home]>php -r "class foo{private $me;function __construct(){$this->me = __CLASS__;var_dump($this->me);}function foome(){var_dump($this->me);}} class bar extends foo{private $me;function __construct(){$this->me = __CLASS__;var_dump($this->me); parent::__construct(); var_dump($this->me);}} $bar = new bar(); $bar->me = 1234; $bar->foome();"
string(3) "bar"
string(3) "foo"
string(3) "bar"
Fatal error: Cannot access private property bar::$me in Command line code on line 1
[feyd@home]>php -r "class foo{private $me;function __construct(){$this->me = __CLASS__;var_dump($this->me);}function foome(){var_dump($this->me);}} class bar extends foo{protected $me;function __construct(){$this->me = __CLASS__;var_dump($this->me); parent::__construct(); var_dump($this->me);}}$bar = new bar(); $bar->me = 1234; $bar->foome();"
string(3) "bar"
string(3) "foo"
string(3) "bar"
Fatal error: Cannot access protected property bar::$me in Command line code on line 1
[feyd@home]>php -r "class foo{private $me;function __construct(){$this->me = __CLASS__;var_dump($this->me);}function foome(){var_dump($this->me);}} class bar extends foo{public $me;function __construct(){$this->me = __CLASS__;var_dump($this->me); parent::__construct(); var_dump($this->me);}} $bar = new bar(); $bar->me = 1234; $bar->foome();"
string(3) "bar"
string(3) "foo"
string(3) "bar"
string(3) "foo"
[feyd@home]>php -r "class foo{protected $me;function __construct(){$this->me = __CLASS__;var_dump($this->me);}function foome(){var_dump($this->me);}} class bar extends foo{private $me;function __construct(){$this->me = __CLASS__;var_dump($this->me); parent::__construct(); var_dump($this->me);}}$bar = new bar(); $bar->me = 1234; $bar->foome();"
Fatal error: Access level to bar::$me must be protected (as in class foo) or weaker in Command line code on line 1
[feyd@home]>php -r "class foo{protected $me;function __construct(){$this->me = __CLASS__;var_dump($this->me);}function foome(){var_dump($this->me);}} class bar extends foo{protected $me;function __construct(){$this->me = __CLASS__;var_dump($this->me); parent::__construct(); var_dump($this->me);}} $bar = new bar(); $bar->me = 1234; $bar->foome();"
string(3) "bar"
string(3) "foo"
string(3) "foo"
Fatal error: Cannot access protected property bar::$me in Command line code on line 1
[feyd@home]>php -r "class foo{protected $me;function __construct(){$this->me = __CLASS__;var_dump($this->me);}function foome(){var_dump($this->me);}} class bar extends foo{public $me;function __construct(){$this->me = __CLASS__;var_dump($this->me); parent::__construct(); var_dump($this->me);}} $bar = new bar(); $bar->me = 1234; $bar->foome();"
string(3) "bar"
string(3) "foo"
string(3) "foo"
int(1234)
[feyd@home]>php -r "class foo{public $me;function __construct(){$this->me = __CLASS__;var_dump($this->me);}function foome(){var_dump($this->me);}} class bar extends foo{private $me;function __construct(){$this->me = __CLASS__;var_dump($this->me); parent::__construct(); var_dump($this->me);}} $bar = new bar(); $bar->me = 1234; $bar->foome();"
Fatal error: Access level to bar::$me must be public (as in class foo) in Command line code on line 1
[feyd@home]>php -r "class foo{public $me;function __construct(){$this->me = __CLASS__;var_dump($this->me);}function foome(){var_dump($this->me);}} class bar extends foo{protected $me;function __construct(){$this->me = __CLASS__;var_dump($this->me); parent::__construct(); var_dump($this->me);}} $bar = new bar(); $bar->me = 1234; $bar->foome();"
Fatal error: Access level to bar::$me must be public (as in class foo) in Command line code on line 1
[feyd@home]>php -r "class foo{public $me;function __construct(){$this->me = __CLASS__;var_dump($this->me);}function foome(){var_dump($this->me);}} class bar extends foo{public $me;function __construct(){$this->me = __CLASS__;var_dump($this->me); parent::__construct(); var_dump($this->me);}} $bar = new bar(); $bar->me = 1234; $bar->foome();"
string(3) "bar"
string(3) "foo"
string(3) "foo"
int(1234)Code: Select all
PHP 5.1.5 (cli) (built: Aug 15 2006 23:54:56)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
with Xdebug v2.0.0beta6, Copyright (c) 2002, 2003, 2004, 2005, 2006, by Derick RethansCode: Select all
<?php
class foo{
private $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
}
function foome(){
var_dump($this->me);
}
}
class bar extends foo{
private $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
parent::__construct();
var_dump($this->me);
}
}
$bar = new bar();
$bar->me = 1234;
$bar->foome();
?>
string(3) "bar"
string(3) "foo"
string(3) "bar"
Fatal error: Cannot access private property bar::$me in Command line code on line 1
<?php
class foo{
private $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
}
function foome(){
var_dump($this->me);
}
}
class bar extends foo{
protected $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
parent::__construct();
var_dump($this->me);
}
}
$bar = new bar();
$bar->me = 1234;
$bar->foome();
?>
string(3) "bar"
string(3) "foo"
string(3) "bar"
Fatal error: Cannot access protected property bar::$me in Command line code on line 1
<?php
class foo{
private $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
}
function foome(){
var_dump($this->me);
}
}
class bar extends foo{
public $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
parent::__construct();
var_dump($this->me);
}
}
$bar = new bar();
$bar->me = 1234;
$bar->foome();
?>
string(3) "bar"
string(3) "foo"
string(3) "bar"
string(3) "foo"
<?php
class foo{
protected $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
}
function foome(){
var_dump($this->me);
}
}
class bar extends foo{
private $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
parent::__construct();
var_dump($this->me);
}
}
$bar = new bar();
$bar->me = 1234;
$bar->foome();
?>
Fatal error: Access level to bar::$me must be protected (as in class foo) or weaker in Command line code on line 1
<?php
class foo{
protected $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
}
function foome(){
var_dump($this->me);
}
}
class bar extends foo{
protected $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
parent::__construct();
var_dump($this->me);
}
}
$bar = new bar();
$bar->me = 1234;
$bar->foome();
?>
string(3) "bar"
string(3) "foo"
string(3) "foo"
Fatal error: Cannot access protected property bar::$me in Command line code on line 1
<?php
class foo{
protected $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
}
function foome(){
var_dump($this->me);
}
}
class bar extends foo{
public $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
parent::__construct();
var_dump($this->me);
}
}
$bar = new bar();
$bar->me = 1234;
$bar->foome();
?>
string(3) "bar"
string(3) "foo"
string(3) "foo"
int(1234)
<?php
class foo{
public $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
}
function foome(){
var_dump($this->me);
}
}
class bar extends foo{
private $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
parent::__construct();
var_dump($this->me);
}
}
$bar = new bar();
$bar->me = 1234;
$bar->foome();
?>
Fatal error: Access level to bar::$me must be public (as in class foo) in Command line code on line 1
<?php
class foo{
public $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
}
function foome(){
var_dump($this->me);
}
}
class bar extends foo{
protected $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
parent::__construct();
var_dump($this->me);
}
}
$bar = new bar();
$bar->me = 1234;
$bar->foome();
?>
Fatal error: Access level to bar::$me must be public (as in class foo) in Command line code on line 1
<?php
class foo{
public $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
}
function foome(){
var_dump($this->me);
}
}
class bar extends foo{
public $me;
function __construct(){
$this->me = __CLASS__;
var_dump($this->me);
parent::__construct();
var_dump($this->me);
}
}
$bar = new bar();
$bar->me = 1234;
$bar->foome();
?>
string(3) "bar"
string(3) "foo"
string(3) "foo"
int(1234)Why post it then?I wasn't really expecting you, anyone really, to break it out into the code under "normal" coding
Don't please, I may have nightmaresand you haven't seen obfuscation from me yet.
Code: Select all
<?php
class foo{
private $me = 1;
function __construct(){
var_dump($this->me);
}
function foome(){
var_dump($this->me);
}
}
class bar extends foo{
public $me = 2;
function __construct(){
var_dump($this->me);
$this->foome();
parent::__construct();
var_dump($this->me);
}
}
$bar = new bar();
$bar->me = 1234;
$bar->foome();
?>Code: Select all
int(2) int(1) int(1) int(2) int(1)