我试图在AppServiceProvider
中注册我的ObserverHelper
,如下所示,但我收到了以下错误。
找不到观察员:App\Helpers\App\observer \FileLogObserver
AppServiceProvider.php
use IlluminateSupportServiceProvider;
use AppHelpersObserverHelper;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
}
public function boot()
{
ObserverHelper::register();
}
}
ObserverHelper.php
namespace AppHelpers;
class ObserverHelper
{
protected static $observers = [
'AppModelsFileLogs' => AppObserversFileLogObserver::class,
];
public static function register()
{
foreach (self::$observers as $model => $observer) {
$model::observe($observer);
}
}
}
尝试在AppObserversFileLogObserver::class
前面添加一个(引用全局命名空间的反斜杠(,或者导入该类。
带反斜杠(引用全局命名空间(:
<?php
namespace AppHelpers;
class ObserverHelper
{
protected static $observers = [
'AppModelsFileLogs' => AppObserversFileLogObserver::class,
];
public static function register()
{
foreach(self::$observers as $model => $observer) {
$model::observe($observer);
}
}
}
或带有导入:
<?php
namespace AppHelpers;
use AppObserversFileLogObserver;
class ObserverHelper
{
protected static $observers = [
'AppModelsFileLogs' => FileLogObserver::class,
];
public static function register()
{
foreach(self::$observers as $model => $observer) {
$model::observe($observer);
}
}
}
注意:即使您的代码是一个有效的解决方案,也可以考虑创建一个单独的提供程序来定义观察者(例如ObserverServiceProvider
(。