假设我在MyClass
命名空间的app/repository/MyClass.php
中有一个课程Repository
:
namespace Repository;
class MyClass { ... }
我可以使用ioc容器绑定它:
App::bind('SomeClass', 'Repository\MyClass');
与模型依赖关系相同:
SomeClass extends Eloquent{
public function dependency()
{
return $this->hasOne('Models\Dependency');
}
}
一种解决方案是在app.php
中创建别名,但必须为我想要自动命名的每个文件执行此操作:
'MyClass' => 'Repository\MyClass'
是否可以使ioc容器在不使用别名的情况下识别类的正确名称空间?我们能以任何方式使用Composer吗?
答案 0 :(得分:1)
除非您想为命名空间中的每个类注册别名,否则无法实现。我最近的Laravel 4项目有IOC Container绑定到我明确声明的命名空间类。
App::bind('Foo\Bar\Repositories\UserRepositoryInterface', 'Foo\Bar\Repositories\DbUserRepository');
答案 1 :(得分:0)
您可以使用
cd /path/to/laravel/
php composer dump-autoload
让laravel看到所有(新)类并正确加载它们
答案 2 :(得分:0)
将app/repository
添加到composer.json文件的自动加载部分,例如:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/repository"
]
},
然后运行composer dump-autoload
。