我有一个名为Messaging的类,我创建了一个使用它的外观,如
Messaging::getConversationMessages($conv_id, $user_id);
我已按照以下链接中的所有说明进行操作
How do I create a facade class with Laravel?
这是我的MessagingServiceProvider calss,下面是绑定
<?php
use Illuminate\Support\ServiceProvider;
class MessagingServiceProvider extends ServiceProvider {
/**
* Register the service provider.
*
* @return void
*/
public function register() {
App::bind('messaging', function()
{
return new \Messaging\Messaging;
}
);
}
}
下面是我为我创建的Facade类,以我想要的方式使用它
<?php
use Illuminate\Support\Facades\Facade;
class Messaging extends Facade
{
/**
* Get the registered name of the component.
*
* @return string
*/
protected static function getFacadeAccessor() { return 'messaging'; }
}
我已将MessagingServiceProvider.php放在app app文件夹中名为serviceproviders的文件夹中,并将messaging.php(包含facade类的文件)放在app文件夹中名为facade的文件夹中,并将它们添加到自动加载。 / p>
下面是门面的模型类
<?php
namespace Messaging;
use Eloquent; // if you're extending Eloquent
class Messaging extends Eloquent {
...
}
完成所有这些之后我仍然收到错误“非静态方法Messaging \ Messaging :: getConversationMessages()不应该静态调用,假设$ this来自不兼容的上下文”
答案 0 :(得分:0)
您没有使用Facade。尝试命名它并使用不同的名称:
<?php namespace Messaging;
use Illuminate\Support\Facades\Facade;
class MessagingFacade extends Facade
{
...
}
然后你
composer dumpautoload
尝试以这种方式使用它:
Messaging\MessagingFacade::getConversationMessages()
如果它适用于您,则可以在app/config/app.php
中为其创建别名。
'Messaging' => 'Messaging\MessagingFacade',
你应该能够将它用作:
Messaging::getConversationMessages()
关于命名空间类,每次需要来自另一个命名空间的类时,都需要root:
\DB::whatever();