我是Composer,名称空间和自动加载的新手,我无法弄清楚在哪里编写代码(在vendor
下?)。
我在ilhan
下创建了一个名为vendor
的目录,以及一个名为People.php
的文件。然后在使用index.php
的主use ilhan\People.php as People;
文件中无效,因为我认为它最初必须在autoload_namespaces.php
中编写。
但是,如果我将ilhan
注册为供应商,那么我认为Composer会调查它不存在的packagist.org。
答案 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
上的官方作曲家文档