【问题标题】:Load namespaces with composer as psr-0 libraries使用 composer 将命名空间加载为 psr-0 库
【发布时间】:2013-08-03 18:34:32
【问题描述】:

我在任何 Web 应用程序项目中都使用 Silex(以及 Composer)。

我想自动加载 4 个实体和表单:

  1. FSB\MyProject\Entity\Booking --> /src/FSB/MyProject/Entity/Booking.php
  2. FSB\MyProject\Form\BookingType --> /src/FSB/MyProject/Form/BookingType.php
  3. FSB\MyProject\Entity\Contact --> /src/FSB/MyProject/Entity/Contact.php
  4. FSB\MyProject\Form\ContactType --> /src/FSB/MyProject/Form/ContactType.php

composer.json 是用 psr-0 数组定义的:

{
    "require": {
        "silex/silex": "~1.0",
        [...]
    },
    "autoload": {
        "psr-0": {
            "FSB": "src/"
        }
    }
}

然后在我的 index.php 文件中我只是调用:

use FSB\MyProject\Entity\Contact;
use FSB\MyProject\Form\ContactType;
use FSB\MyProject\Entity\Booking;
use FSB\MyProject\Form\BookingType;

$contact = new Contact();

在我的开发环境、MAMP、php 5.4 中一切正常

但它在我的生产服务器上中断了,Ubuntu 上的 Apache2 和 PHP 5.4 也是

"PHP 致命错误:找不到类 'FSB\MyProject\Entity\Contact' 在 /[...]/index.php"

我尝试了很多方法来加载我的实体,例如:

{
    "require": {
        "silex/silex": "~1.0",
        [...]
    },
    "autoload": {
        "psr-0": {
            "FSB/Palmeraie": "src/",
        }
    }
}

甚至:

{
    "require": {
        "silex/silex": "~1.0",
        [...]
    },
    "autoload": {
        "psr-0": {
            "FSB\\Palmeraie\\Entity": "src/",
            "FSB\\Palmeraie\\Form": "src/"
        }
    }
}

--> 在我的开发环境中有几种方法;在我的生产环境中没有...

我错过了什么吗?

【问题讨论】:

    标签: namespaces composer-php silex psr-0


    【解决方案1】:

    检查文件/目录名称的大小写是否正确,OS X 上的文件名与 Linux/Unix 文件系统上的文件名不同。

    【讨论】:

    • 其实我在想,这些文件夹应该怎么写?实际上,我有一个小写的 src/ 文件夹和这里写的 FSB/MyProject/Entity 文件夹。
    • 尽管 CamelCase 是惯例,但您可以随意编写它们。但是文件的路径和命名空间和类名必须完全匹配。
    • 我应该为 psr-0 精确一些吗?我的意思是 "autoload": { "psr-0": { "FSB/MyProject": "src/" }} 还是让它空白更好? (“自动加载”:{“psr-0”:{“”:“src/”}}
    • 如果你只有一个基本目录,可以使用""
    • 最后,我认为它不喜欢我的名字,我只是用另一个命名空间更新了它,它可以工作......但没有办法让它工作我的完整命名空间 Me\MyProject\Entity 等. 无论如何,它适用于这个时间。
    【解决方案2】:

    执行“composer update”,它会再次工作。

    【讨论】:

      猜你喜欢
      • 2014-03-17
      • 2013-11-30
      • 2014-10-25
      • 2018-10-05
      • 2014-09-24
      • 2015-09-22
      • 2013-08-11
      • 2019-08-27
      • 2014-07-25
      相关资源
      最近更新 更多