【发布时间】:2014-10-25 01:18:12
【问题描述】:
我在使用 PSR-0 将自己的命名空间添加到作曲家时遇到问题。我已经阅读了 this 和 this 但我仍然无法让它工作
composer.json
{
"require": {
"klein/klein": "2.0.x",
"doctrine/orm": "2.4.4"
},
"autoload": {
"psr-0": {
"mynamespace": "src/"
}
}
}
src 文件夹与composer.json 位于同一目录中
src目录结构如下
src
└── mynamespace
├── Keys.php
Keys.php
<?php
namespace mynamespace\Keys;
define ("API_KEY", "XXXXXXXXXXXX");
?>
index.php
use Klein\Klein;
use mynamespace\Keys;
require_once __DIR__ . '/vendor/autoload.php';
$klein = new Klein(); // works
echo API_KEY; // Undefined constant
【问题讨论】:
-
PSR-x 自动加载器仅“理解”单命名空间单类包含脚本。即使它们确实提供了完整的语言支持,PHP 当前的 spl_autoload() 也不能识别常量或普通函数查找。
echo API_KEY不会触发任何事情,use ..\Keys声明也不会。 -
@mario 所以我必须使用 require 来加载我自己的命名空间?
标签: php composer-php autoload autoloader psr-0