我在模型类中访问 Laravel 的辅助函数 base_path()。我正在运行 Laravel 4.1.23
我收到以下错误:
PHP Fatal error: Call to a member function make() on a non-object in /Applications/mampstack-5.4.23-0/frameworks/laravel/vendor/laravel/framework/src/Illuminate/Support/helpers.php on line 492
奇怪的是我在 phpunit 中测试了函数调用,它运行良好。任何帮助将不胜感激。
我的项目有以下依赖:
"require": {
"laravel/framework": "4.1.*",
"cpliakas/git-wrapper": "1.1.*",
"rmccue/requests": "v1.6.0",
"phpseclib/phpseclib": "0.3.*"
}
最佳答案
Laravel 告诉你它不能在非对象上执行 make()。如果这是行:
app()->make('path.base').($path ? '/'.$path : $path);
非对象是函数的返回值
app()
这可能已被您的包或自己的助手之一覆盖。这是创建此函数的代码:
if ( ! function_exists('app'))
{
/**
* Get the root Facade application instance.
*
* @param string $make
* @return mixed
*/
function app($make = null)
{
if ( ! is_null($make))
{
return app()->make($make);
}
return Illuminate\Support\Facades\Facade::getFacadeApplication();
}
}
如你所见,除非它不存在,否则 Laravel 不会创建它。尝试执行:
var_dump( app() );
在你的模型中看看你有什么返回。它必须以
开头object(Illuminate\Foundation\Application)[2]
protected 'booted' => boolean true
protected 'bootingCallbacks' =>
array (size=0)
如果它不是Illuminate\Foundation\Application
的对象,尝试找到app()
函数在哪里并停止使用它。
关于php - Laravel 辅助函数 base_path() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22393434/