Composer psr-0自动加载自定义命名空间不起作用



在使用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;

最新更新