使用composer将名称空间加载为psr-0库

时间:2013-08-02 13:11:18

标签: namespaces composer-php silex psr-0

我正在将Silex(以及作曲家)用于任何Web应用程序项目。

我想自动加载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
  5. 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/"
            }
        }
    }
    

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

    我错过了什么吗?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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