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

Where should I write my code so that Composer can autoload my PHP classes?

我是 Composer、命名空间和自动加载的新手,我不知道在哪里编写代码(在 vendor 下?)。

我在 vendor 下创建了一个名为 ilhan 的目录和一个名为 People.php 的文件。然后在主 index.php 文件中使用 use ilhan\People.php as People; 不起作用,因为我认为它最初一定是用 autoload_namespaces.php 编写的。

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

您的代码进入项目的根目录(或任何子目录)。 vendor 文件夹仅供作曲家下载的 packages/libraries 使用,您永远不要更改其中的任何内容。

要开始一个项目,只需创建一个新文件,例如/my-project/index.php 并需要由 composer 自动创建的 autoload.php

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

    // here comes your project code

有关自动加载的更多信息,请参阅位于 Basic Usage: Autoloading

的官方作曲家文档

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

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

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

<?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;

但是为什么要在index.php中使用Peopleclass?