我有这样的composer.json结构:
"psr-0": {
"DatabaseSeeder\\": "app/database/seeds/"
},
我在app / database / seeds中有文件(这里的文件可以动态创建,所以“classmap”的解决方案:[“app / database / seeds”]在这里不起作用bcs我必须在播种前始终转储自动加载:
结构如下:
# DatabaseSeeder.php
namespace DatabaseSeeder;
use Doctrine\ORM\EntityManager;
class DatabaseSeeder implements Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run(EntityManager $em)
{
$this->call('DatabaseSeeder\UserTableSeeder', $em);
}
private function call($class, $em)
{
$reflectionMethod = new \ReflectionMethod($class, 'run');
$reflectionMethod->invoke(new $class, $em);
}
在php composer.phar安装和php composer.phar dump-autoload之后我无法在应用程序中使用例如index.php
$object = new \DatabaseSeeder\DatabaseSeeder();
因为我收到错误:类DatabaseSeeder \ DatabaseSeeder不存在为什么?它应该在启动对象时自动加载类。
答案 0 :(得分:1)
首先,您应该确保index.php正确包含composer autoload。
<?php
include __DIR__ . '/vendor/autoload.php';
然后,您需要验证您的目录结构是否正确自动加载。
如果您的PSR-0配置
"psr-0": {
"DatabaseSeeder\\": "app/database/seeds/"
},
然后您的目录结构应如下所示:
app/
database/
seeds/
DatabaseSeeder/
DatabaseSeeder.php
有关composer PSR-0自动加载的更多信息,您可以阅读composer schema文档。希望这会有所帮助。