我应该在哪里编写代码以便 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
中使用People
class?
我是 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
中使用People
class?