File: indirect_method_call_002.phpt

package info (click to toggle)
php8.4 8.4.11-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 208,108 kB
  • sloc: ansic: 1,060,628; php: 35,345; sh: 11,866; cpp: 7,201; pascal: 4,913; javascript: 3,091; asm: 2,810; yacc: 2,411; makefile: 689; xml: 446; python: 301; awk: 148
file content (35 lines) | stat: -rw-r--r-- 714 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
--TEST--
Indirect method call with chaining
--FILE--
<?php

class foo {
    public $x = 'testing';

    public function bar() {
        return "foo";
    }
    public function baz() {
        return new self;
    }
    static function xyz() {
    }
}

var_dump((new foo())->bar());               // string(3) "foo"
var_dump((new foo())->baz()->x);            // string(7) "testing"
var_dump((new foo())->baz()->baz()->bar()); // string(3) "foo"
var_dump((new foo())->xyz());               // NULL
(new foo())->www();

?>
--EXPECTF--
string(3) "foo"
string(7) "testing"
string(3) "foo"
NULL

Fatal error: Uncaught Error: Call to undefined method foo::www() in %s:%d
Stack trace:
#0 {main}
  thrown in %s on line %d