<?php // Copyright 2004-2015 Facebook. All Rights Reserved. function def() { define('FOO', 1); } function show($a, $b) { var_dump($a, $b); } function test() { show(FOO, FOO); } HH\autoload_set_paths(array('constant' => array(), 'failure' => 'def'), ""); test();
<?php var_dump(HH\autoload_set_paths(array('function' => array(), 'constant' => array(), 'failure' => 'failure'), '')); function failure($kind, $name) { if ($kind == 'constant' && $name == 'bar') { define('bar', 'baz'); } var_dump($kind, $name); } var_dump(function_exists('foo')); var_dump(function_exists('bar', false)); var_dump(defined('foo')); var_dump(defined('bar', false)); var_dump(constant('foo')); var_dump(constant('bar')); if (0) { function foo() { } function foo() { } define('foo', 0); define('bar', 0); }
<?php function fail($t, $n, $e) { var_dump($t, $n); if ($e instanceof Exception) { var_dump($e->getMessage(), $e->getTrace()); } else { var_dump($e); } if ($n == 'C') { class C { } } else { if ($n == 'D') { class D { } } } } \HH\autoload_set_paths(array('class' => array('c' => 'autoload-fail-c.inc', 'd' => 'autoload-fail-d.inc'), 'failure' => 'fail'), __DIR__ . '/'); $x = new C(); $x = new D();
function fb_autoload_map(mixed $map, string $root) : bool { trigger_error(__FUNCTION__ . '(): Use HH\\autoload_set_paths() instead.', E_DEPRECATED); return HH\autoload_set_paths($map, $root); }
<?php function fail($t, $n, $e) { var_dump($t, $n); if ($e instanceof Exception) { var_dump($e->getMessage(), $e->getTrace()); } else { var_dump($e); } return false; // stop: otherwise hoistability would create an infinite loop } \HH\autoload_set_paths(array('class' => array('i1' => 'autoload-fail-e.inc', 'i2' => 'autoload-fail-e.inc'), 'failure' => 'fail'), __DIR__ . '/'); class X implements I1 { public function method() { echo __METHOD__, "\n"; } } $x = new X(); $x->method(); echo 'NOTE: repo-mode doesn\'t invoke the autoloader at all (I1 is in repo)', "\n"; echo 'Done', "\n";
/** * Deprecated - use HH\autoload_set_paths instead. */ function fb_autoload_map(mixed $map, string $root) : bool { return HH\autoload_set_paths($map, $root); }