我无法让自动装带器在Hack / HHVM中工作。
我主要是一名PHP开发人员,但决定为我正在从事的这个新项目尝试Hack。
我的项目层次结构如下:
autoload.php看起来像:
<?hh // strict
function setupAutoload(): void {
$map = array(
'class' => array('A' => 'Database/DatabaseConnection.php'),
'failure' => function($kind, $name) { echo "Autoload fail: $kind, $name\n"; }
);
\HH\autoload_set_paths($map, '/var/www/html/');
}
setupAutoload();
数据库/数据库连接看起来像:
<?hh // strict
class DatabaseConnection {
// All my db connect code
}
,最后是AppSupport / GetSomething.php:
<?hh // strict
require_once $_SERVER['DOCUMENT_ROOT'] . '/autoload.php';
$pdo = new DatabaseConnection('localhost', NULL, 'XXXX', 'YYYY', 'ZZZZ');
$stmt = $pdo->getLink()->prepare('SELECT * FROM test');
$stmt->execute();
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($res);
运行GetSomething.php时,我得到Class undefined: DatabaseConnection
虽然我的自动装带器没有出现任何错误...但是奇怪的是,如果我更换
require_once $_SERVER['DOCUMENT_ROOT'] . '/autoload.php';
与
require_once '/var/www/html/Database/DatabaseConnection.php';
直接工作正常。
我一定很想念一些傻事...谢谢!