以前我可以做这样的事情:
/var/www/laravel/app/Http/Controllers/HelloController.php
<?php namespace App'Http'Controllers;
use App'Http'Controllers'Controller;
use App'Models'Hello'Hello as Hello;
class HelloController extends Controller {
public function index() {
$o = new Hello;
$o = new Hello('changed1','changed1');
var_dump($o);
}
}
/var/www/laravel/app/Models/Hello
<?php namespace App'Models'Hello;
use Illuminate'Database'Eloquent'Model'Hello.php;
class Hello extends Model
{
public function __construct($one='default1', $two='default2')
{
echo "First Param: $one","'n<br>'n";
echo "Second Param: $two","'n<br>'n";
echo "'n<br>'n";
}
}
routes.php
Route::get('tutorial', function() {
$app = app();
$app->make('Hello');
});
在没有make的情况下实例化是可行的,但这现在带来了一个错误:
ReflectionException in Container.php line 776: Class Hello does not exist
你认为我在这里少了什么?
因为类的namespace
为App'Models'Hello
,所以在尝试实例化类时必须使用它的namespace
。因此,您的代码应该是这样的:
Route::get('tutorial', function() {
$app = app();
$app->make('App'Models'Hello'Hello');
});
为了在答案中展开一点,您可以删除make()
方法调用,只使用app()
助手,最终会得到相同的结果:
Route::get('tutorial', function() {
$app = app();
$app->make('App'Models'Hello'Hello');
// you can achieve the same with the
// `app()` helper using less characters :)
app('App'Models'Hello'Hello');
});