代码之家  ›  专栏  ›  技术社区  ›  Georgi Georgiev

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

  •  0
  • Georgi Georgiev  · 技术社区  · 11 年前

    我在使用PSR-0向composer添加自己的名称空间时遇到了问题。我读过 this this 但我还是做不到

    组合器.json

    {
    "require": {
        "klein/klein": "2.0.x",
        "doctrine/orm": "2.4.4"
    
    },
    "autoload": {
        "psr-0": {
            "mynamespace":        "src/"
            }
    }
    }
    

    这个 src 文件夹位于与 composer.json

    这个 钢筋混凝土 目录具有以下结构

    src
    └── mynamespace
        ├── Keys.php
    

    按键.php

    <?php
    namespace mynamespace\Keys;
    
    define ("API_KEY", "XXXXXXXXXXXX");
    ?>
    

    索引php

    use Klein\Klein;
    use mynamespace\Keys;
    require_once __DIR__ . '/vendor/autoload.php';
    
    $klein = new Klein(); // works
    echo API_KEY;  // Undefined constant
    
    1 回复  |  直到 9 年前
        1
  •  1
  •   Sven    11 年前

    您只能通过自动加载来加载类、接口和特性。

    因为你所做的只是添加一个 use 子句,该子句本身不会自动加载任何东西(即它不会加载任何东西),如果不使用类,则不会发生任何事情。

    我建议使用类常量。它们可以放入类或接口中:

    namespace mynamespace;
    
    interface Keys {
        const API_KEY = 'XXXXXXXX';
    }
    
    use mynamespace/Keys;
    echo Keys::API_KEY;
    
    推荐文章