ID: 36707
Updated by: [EMAIL PROTECTED]
Reported By: andreigurin at tiscali dot it
Status: Bogus
Bug Type: Class/Object related
Operating System: windows xp sp2 / linux centos /
PHP Version: 4.4.2
New Comment:
This is expected and it was done in order to keep compatibility with
4.x.
Previous Comments:
------------------------------------------------------------------------
[2006-03-13 10:34:12] andreigurin at tiscali dot it
ok, try this
<?php
error_reporting(E_ALL);
class Foo {
protected $__prv;
public function Foo($v) {
$this->__prv = $v;
}
public function prv() {
return $this->__prv;
}
function tst() {
Bar::babar();
}
}
class Bar {
public function babar() {
print $this->prv();
}
}
$foo = new Foo('PRV VALUE');
$foo->tst();
?>
------------------------------------------------------------------------
[2006-03-13 09:19:01] [EMAIL PROTECTED]
Works fine both with 4.x and 5.x.
No bug here.
------------------------------------------------------------------------
[2006-03-13 09:18:28] andreigurin at tiscali dot it
Look here: This happens in 4.xxx versions, and in 5.xxx, my code is for
version 5.
I reported the first version i tested it. It equally falls on 4 an on
5.
------------------------------------------------------------------------
[2006-03-13 09:13:11] judas dot iscariote at gmail dot com
your test results :
Fatal error: Using $this when not in object context..
and the code you mention cannot run in PHP4, since PHP doesn't have
public, private modifiers...
what are you talking about ?
------------------------------------------------------------------------
[2006-03-12 19:44:24] andreigurin at tiscali dot it
Description:
------------
$this keyword visibility is violated if accessed from a function
external to a class. This happens in 4.xxx versions, and in 5.xxx,
Tested on Window 2000, Windows Xp sp2, Linux Centos(3.7?), Red hat, and
some other Linux based systems
Reproduce code:
---------------
class Foo {
private $__prv;
public function __constructor($v) {
$this->__prv = $v;
}
public function do_something() {
bla bla bla...
hack();
}
public function prv() {
return $this->__prv;
}
}
function hack() {
$this->__prv = 'A very bad value!';
}
$foo = new Foo('A good __prv value');
$foo->do_something();
print $foo->prv();
Expected result:
----------------
Triggered error:
bla bla bla undefined variable this in file.php on line ...
Output:
A good __prv value
Actual result:
--------------
Output:
A very bad value
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=36707&edit=1