请有人告诉我为什么我的第一个自制门面不起作用。我花了好几个小时,我可能会发疯。
composer.js包含
"classmap": [
"app/commands",
"app/controllers",
"app/facades",
"app/libraries",
....
/app/config/app.php包含
'providers' => array(
....
'CloudsServiceProvider',
/libraries/Clouds.php
class Clouds {
protected $_current = null;
public function current()
{
if($this->_current)
return $this->_current;
$this->_current = Cloud::find(1); // Cloud in a Model
return $this->_current;
}
}
/libraries/CloudsServiceProvider.php
use Illuminate\Support\ServiceProvider;
class CloudsServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->bind('Clouds', function()
{
return new Clouds();
});
}
}
/facades/CloudsFacade.php
use Illuminate\Support\Facades\Facade;
class Clouds extends Facade
{
protected static function getFacadeAccessor()
{
return 'Clouds';
}
}
在终端我做:
composer dump
当我调用$ cloud = Clouds :: current();我明白了:
Non-static method Clouds::current() should not be called statically, assuming $this from incompatible context
应用::使( '云') - >电流();似乎工作。
我已经学过几个教程,但我只是继续回到这个问题。
答案 0 :(得分:1)
您的Facade使用的是与您的Clouds类相同的名称,您应该改为:
class CloudsFacade extends Facade
{
...
}
提示:打开您的vendor / composer / autoload_classmap.php,所有3个文件必须列在那里。
此外,您必须命名所有3个文件:
<?php namespace App\Clouds;
添加到您的提供商:
'App\Clouds\CloudsServiceProvider',
和别名:
'Clouds' => 'App\Clouds\CloudsFacade',
然后你
composer du
你应该好好去。