我想把all https://getcomposer.org/doc/04-schema.md#psr-0 the https://stackoverflow.com/questions/15179025/unable-to-autoload-class-using-composer peaces https://stackoverflow.com/questions/12818690/using-composers-autoload?rq=1 together https://stackoverflow.com/questions/18146057/composer-autoloader-psr-0-namespaces我发现有关在作曲家中自动加载一个类,但我无法使其工作。我看到的每个例子都缺少一些部分。基本上它可以归结为两个包含 4 行的文件:
索引.php
$loader = require 'vendor/autoload.php';
$loader->add('Vendor\\', __DIR__.'/../app/');
new Vendor_Package_Obj();
应用程序/供应商/包/Obj.php
class Obj {}
我还尝试了 psr-4 以及“Vendor Package Obj?”的所有可以想到的文件夹和名称组合?但没有找到有效的解决方案。
如何使用这些标准使用 Composer 自动加载文件?
根据PSR-4 http://www.php-fig.org/psr/psr-4/,完全限定类名必须有一个顶级命名空间名称,也称为“供应商命名空间”,下划线在完全限定类名的任何部分都没有特殊含义。
尝试这个:
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);
并放置 Obj 类 (src/MyApp/Package/Obj.php) :
<?php
namespace MyApp\Package;
class Obj
{}
现在,当您运行代码时:
php index.php
您应该得到以下输出:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)