【问题标题】:PHP namespace/class not found with composer使用 Composer 找不到 PHP 命名空间/类
【发布时间】:2017-11-03 19:54:06
【问题描述】:

我创建了我的第一个 PHP 库并托管在 GitHub 上。

https://github.com/TBETool/password-generator

关于使用 Composer 在我的 PHP 应用程序中安装库时,目录结构类似于 供应商

|- tbetool
   |- php-password-generator
      |- src
         |- PasswordGenerator.php
      |- README.md
      |- composer.json

composer.json的内容是

{
    "name": "tbetool/php-password-generator",
    "type": "library",
    "homepage": "http://thebornengineer.com",
    ],
    "require": {
        "php": ">=5.3.0"
    }
}

PasswordGenerator.php的内容

<?php
namespace TBETool;

/**
 * Class PasswordGenerator
 * @package TBETool
 */
class PasswordGenerator
{
   // content goes here
}

并在我的项目的 composer.json 中输入 /composer.json

"require": {
    "php": ">=5.6",
    .... other packages....
    "tbetool/php-password-generator": "^1.2"
},

但是当我在我的程序中使用时。

<?php

use TBETool\PasswordGenerator;
class MyClass {
   function myFun() {
       $password = new PasswordGenerator();
   }
}

但它给出了错误

找不到类“TBETool\PasswordGenerator”

设置我的库以使用 composer 时是否有错误?

【问题讨论】:

  • 我从未编写过库,但我认为您需要在 composer.json 文件中的某处添加一个 autoload 部分。在本地使用时如何加载类?

标签: php composer-php


【解决方案1】:

您应该在 composer.json 文件中使用 psr-4 自动加载

"autoload": {
    "psr-4": {
        "Namespace\\": "root/path/for/namespace"
    }
}

然后转储你的自动加载composer dump-autoload

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2016-01-22
    • 2012-10-23
    • 2017-01-26
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多