我应该在哪里编写代码,以便Composer可以自动加载我的PHP类?

时间:2015-06-29 07:10:56

标签: php namespaces composer-php autoload

我是Composer,名称空间和自动加载的新手,我无法弄清楚在哪里编写代码(在vendor下?)。

我在ilhan下创建了一个名为vendor的目录,以及一个名为People.php的文件。然后在使用index.php的主use ilhan\People.php as People;文件中无效,因为我认为它最初必须在autoload_namespaces.php中编写。

但是,如果我将ilhan注册为供应商,那么我认为Composer会调查它不存在的packagist.org。

2 个答案:

答案 0 :(得分:7)

在项目目录的根目录中创建ilhan,而不是在vendor目录中,并将以下内容放入composer.json

   "autoload": {                    
        "psr-4": {
            "Ilhan\\": "ilhan/"
        }               
    },

如果你使用某种框架,很可能你已经在psr-4文件中添加了composer.json自动加载配置,在这种情况下只需添加"Ilhan\\": "ilhan/"。 现在在People.php目录中创建ilhan,其中包含以下内容

<?php

  namespace Ilhan;

  class People{}

确保require __DIR__.'/vendor/autoload.php';包括index.php任何内容,然后运行composer dump-autoload

现在index.php正好require __DIR__.'/vendor/autoload.php';以下应该有效,

use Ilhan\People;

但为什么要在People中使用index.php课程?

答案 1 :(得分:0)

您的代码将进入项目(或任何子目录)的根目录。 vendor文件夹仅适用于作曲家下载的包/库,您不应该在那里更改任何内容。

要启动项目,只需创建一个新文件,例如/my-project/index.php并要求由作曲家自动创建的autoload.php

<?php
    require __DIR__.'/vendor/autoload.php';

    // here comes your project code

有关自动加载的详细信息,请参阅Basic Usage: Autoloading

上的官方作曲家文档