在使用PSR-0将自己的命名空间添加到composer时遇到问题。我读过这个和这个,但我仍然无法使它工作
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 mynamespaceKeys;
define ("API_KEY", "XXXXXXXXXXXX");
?>
index.php
use KleinKlein;
use mynamespaceKeys;
require_once __DIR__ . '/vendor/autoload.php';
$klein = new Klein(); // works
echo API_KEY; // Undefined constant
您只能通过自动加载来加载类、接口和特性。
因为您所做的只是添加一个use
子句,该子句本身不会通过自动加载做任何事情(即,它不会加载某些内容),并且您不使用类,所以不会发生任何事情。
我建议使用类常量。它们可以被放入类或接口中:
namespace mynamespace;
interface Keys {
const API_KEY = 'XXXXXXXX';
}
use mynamespace/Keys;
echo Keys::API_KEY;