Php 作曲家自动加载完整示例?

Php 作曲家自动加载完整示例?,php,composer-php,autoload,Php,Composer Php,Autoload,我试图把我发现的关于自动加载composer中的一个类的内容放进去,但我无法让它工作。我看到的每一个例子都缺少某些部分。基本上可以归结为两个文件,共4行: index.php $loader = require 'vendor/autoload.php'; $loader->add('Vendor\\', __DIR__.'/../app/'); new Vendor_Package_Obj(); app/Vendor/Package/Obj.php class Obj {} 我还尝试

我试图把我发现的关于自动加载composer中的一个类的内容放进去,但我无法让它工作。我看到的每一个例子都缺少某些部分。基本上可以归结为两个文件,共4行:

index.php

$loader = require 'vendor/autoload.php';
$loader->add('Vendor\\', __DIR__.'/../app/');
new Vendor_Package_Obj();
app/Vendor/Package/Obj.php

class Obj {}
我还尝试了psr-4和所有可想象的文件夹和名称组合,用于“供应商包Obj?”?但没有找到有效的解决方案

如何使用这些标准中的任何一个使用composer自动加载文件?

根据,完全限定类名必须具有顶级名称空间名称,也称为“供应商名称空间”,下划线在完全限定类名的任何部分都没有特殊意义

试试这个:

cd ~
mkdir -p testproj/src/MyApp/Package
cd testproj
composer init && composer update
使用以下内容创建index.php:

<?php
$loader = require 'vendor/autoload.php';
$loader->add('MyApp\\', __DIR__.'/src/');
$a = new MyApp\Package\Obj();
var_dump($a);
您应该将其作为输出:

class MyApp\Package\Obj#2 (0) {
}
此外,目录脚手架应如下所示:

testproj
├── composer.json
├── index.php
├── src
│   └── MyApp
│       └── Package
│           └── Obj.php
└── vendor
    ├── autoload.php
    └── composer
        ├── ClassLoader.php
        ├── autoload_classmap.php
        ├── autoload_namespaces.php
        ├── autoload_psr4.php
        └── autoload_real.php

您的类不被称为
供应商\u包\u Obj
。它被称为
Obj
,应该在名称空间中声明。一些示例使用名称空间,其他示例不使用名称空间。大多数示例根本没有显示Obj.php。仅举一次完整的例子。只有几行……在我删除了所有其他的
Obj.php
和我在
src
中的文件夹之后,这就行了。非常感谢@埃迪古,你能帮我做这个吗?=>作为模板使用的一个很好的例子。@edigu是否需要将
index.php
的代码放在用作页面的每个文件中?例如index.php、faq.php、about.phpIf您的应用程序没有路由器或实现某种前端控制器是的。我强烈建议使用路由器,而不是创建单独的文件,如faq.php和about.php。您可以查看GitHub上的nikic/fastroute,获得一个独立于框架的好例子。
class MyApp\Package\Obj#2 (0) {
}
testproj
├── composer.json
├── index.php
├── src
│   └── MyApp
│       └── Package
│           └── Obj.php
└── vendor
    ├── autoload.php
    └── composer
        ├── ClassLoader.php
        ├── autoload_classmap.php
        ├── autoload_namespaces.php
        ├── autoload_psr4.php
        └── autoload_real.php