1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00
Files
archived-php-src/Zend/tests/backtrace/bug69180-backtrace.phpt
DanielEScherzer 618190127e Zend/tests: organize some tests with sub directories (8) (#17873)
Create new sub directories for tests related to backtraces and for tests
related to `$this` being reserved in different places and not being usable or
reassignable.

Work towards GH-15631
2025-02-22 19:10:59 +00:00

120 lines
2.0 KiB
PHP

--TEST--
Bug #69180: Backtrace does not honor trait conflict resolution / method aliasing
--FILE--
<?php
trait T {
public function __get($name): string {
var_dump(__METHOD__);
print_r(array_map(fn ($v) => $v['class'] . '::' . $v['function'], debug_backtrace()));
return '=' . $name;
}
}
class Model {
use T {
T::__get as private __t_get;
}
public function __get($name): string {
var_dump(__METHOD__);
return $this->__t_get($name);
}
}
class X extends Model {}
class Y extends Model {
public function __get($name): string {
var_dump(__METHOD__);
return parent::__get($name);
}
}
class Z extends Model {
private function __x_get($name): string {
var_dump(__METHOD__);
return parent::__get($name);
}
public function __get($name): string {
var_dump(__METHOD__);
return $this->__x_get($name);
}
}
class P extends Model {
private function __t_get($name): string {
var_dump(__METHOD__);
return parent::__get($name);
}
public function __get($name): string {
var_dump(__METHOD__);
return $this->__t_get($name);
}
}
$m = new X();
$m->a;
echo "\n";
$m = new Y();
$m->a;
echo "\n";
$m = new Z();
$m->a;
echo "\n";
$m = new P();
$m->a;
?>
--EXPECT--
string(12) "Model::__get"
string(8) "T::__get"
Array
(
[0] => Model::__t_get
[1] => Model::__get
)
string(8) "Y::__get"
string(12) "Model::__get"
string(8) "T::__get"
Array
(
[0] => Model::__t_get
[1] => Model::__get
[2] => Y::__get
)
string(8) "Z::__get"
string(10) "Z::__x_get"
string(12) "Model::__get"
string(8) "T::__get"
Array
(
[0] => Model::__t_get
[1] => Model::__get
[2] => Z::__x_get
[3] => Z::__get
)
string(8) "P::__get"
string(10) "P::__t_get"
string(12) "Model::__get"
string(8) "T::__get"
Array
(
[0] => Model::__t_get
[1] => Model::__get
[2] => P::__t_get
[3] => P::__get
)