我正在开发一个包,它封装了一些Laravel用户逻辑,因为我希望在添加一些特性的同时保留本机实现。
这是我的包裹的composer.json
{
"name": "foo/bar",
"description": "A Laravel 5 package",
"authors": [
{
"name": "",
"email": ""
}
],
"require": {
"php": ">=5.4.0",
"illuminate/auth": "5.1.*"
},
"require-dev": {
"orchestra/testbench": "~3.0"
},
"autoload": {
"psr-4": {
"Foo\\": "src/Foo/"
}
},
"minimum-stability": "stable"
}这是一个示例代码:
class Foo {
function login($username, $password) {
\Auth::attempt($username, $password);
}
}这是一个示例测试用例。
class UserServiceTest extends \Orchestra\Testbench\TestCase {
function testLogin() {
$foo = new Foo();
$foo->login('foo', 'bar');
}
}现在,在运行测试时,我得到了这个PHP Fatal error: Class '\App\User' not found in path/to/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php on line 126
我可以理解为什么(App\User生活在laravel/laravel包中),但是我无法理解如何正确声明包依赖项。
为了重用整个Auth和User laravel本机实现,我应该做什么?
发布于 2015-08-03 21:59:42
您不需要使用laravel/laravel包来重用Laravel的身份验证。
只需导入illuminate/auth包就足够了。这将给出您需要对用户进行身份验证所需的3件事情中的2件:
您最不需要的是一个用户类,或者任何实现AuthenticatableContract.的模型
将用户提供程序作为其构造函数的参数之一,而用户提供程序则将模型的类作为其构造函数的参数之一。
这三个元素足以使用Laravel的身份验证。
https://stackoverflow.com/questions/31793183
复制相似问题