xref: /php-src/ext/spl/tests/spl_autoload_013.phpt (revision 08b2ab22)
1--TEST--
2SPL: spl_autoload_functions() with closures and invocables
3--FILE--
4<?php
5$closure = function($class) {
6  echo "a called\n";
7};
8
9class Autoloader {
10  private $dir;
11  public function __construct($dir) {
12    $this->dir = $dir;
13  }
14  public function __invoke($class) {
15    var_dump("{$this->dir}/$class.php");
16  }
17}
18
19$al1 = new Autoloader('d1');
20$al2 = new Autoloader('d2');
21
22spl_autoload_register($closure);
23spl_autoload_register($al1);
24spl_autoload_register($al2);
25
26var_dump(spl_autoload_functions());
27
28?>
29--EXPECTF--
30array(3) {
31  [0]=>
32  object(Closure)#%d (4) {
33    ["name"]=>
34    string(%d) "{closure:%s:%d}"
35    ["file"]=>
36    string(%d) "%s"
37    ["line"]=>
38    int(%d)
39    ["parameter"]=>
40    array(1) {
41      ["$class"]=>
42      string(10) "<required>"
43    }
44  }
45  [1]=>
46  object(Autoloader)#%d (1) {
47    ["dir":"Autoloader":private]=>
48    string(2) "d1"
49  }
50  [2]=>
51  object(Autoloader)#%d (1) {
52    ["dir":"Autoloader":private]=>
53    string(2) "d2"
54  }
55}
56