使用 Composer 管理自己的类

hct*_*pcu 5 autoload slim composer-php

我是作曲家和自动加载器的新手。我想我也缺乏文件组织策略。我正在尝试在 slimframework 上建立一个新项目。我有一些 Slim 课程。但是我无法在我的项目中自动加载它们。

/

  • 作曲家.json
  • 作曲家.phar
  • 小贩
  • 配置
    • 一些apiparams.php
    • 数据库.php
    • 缓存文件
    • 通用文件
  • 民众
    • 索引.php
  • 楷模
  • 图书馆
    • 富
    • 苗条的
      • 配置文件
      • 缓存.php

/composer.json:

"autoload": {
    "psr-0": {
        "Foo": "libraries/"
    }
}
Run Code Online (Sandbox Code Playgroud)

/libraries/Foo/Slim/Config.php:

<?php
class Config {
    /**
    * Loads a file based on $key param under ROOT . "/config",
    * if not already loaded. 
    * Then returns an array.
    */
    public static function get($key) {}

}
Run Code Online (Sandbox Code Playgroud)

/libraries/Foo/Slim/Cache.php:

<?php
class Cache{
    /**
    * Initialize a caching engine defined in config file if not already done.
    * Then runs corrensponding engine methods for getting and setting.
    */
    public static function init() {
       $config = Config::get("cache");
       // initialize driver.
    }
    public static function __get($key) {}
    public static function __set($key, $value, $params) {}

}
Run Code Online (Sandbox Code Playgroud)

/public/index.php:

require ROOT."/vendor/autoload.php";
$app = new Slim\Slim();
var_dump(Config::get("database")); exit;
//var_dump(Foo\Slim\Config::get("database")); exit;
//var_dump(Slim\Config::get("database")); exit;
Run Code Online (Sandbox Code Playgroud)

错误是找不到配置类。

Dan*_*ack 2

您忘记输入:

namespace Foo/Slim;
Run Code Online (Sandbox Code Playgroud)

在 /libraries/Foo/Slim/Cache.php 的顶部(或者可能已经将其剪断为代码示例)。

如果添加命名空间不能解决问题,您应该使用调试器单步调试代码,并在尝试加载类但失败时准确查看 Composer 自动加载器正在搜索哪些文件。