diff --git a/phpstan.neon b/phpstan.neon index 91de96f6..28c90543 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,6 +1,7 @@ parameters: paths: - src/Prime + - src/Laravel level: 8 excludes_analyse: - vendor/* diff --git a/src/Laravel/Config/Config.php b/src/Laravel/Config/Config.php index a08150b5..69cb8cd3 100644 --- a/src/Laravel/Config/Config.php +++ b/src/Laravel/Config/Config.php @@ -7,10 +7,15 @@ use Illuminate\Config\Repository; final class Config implements ConfigInterface { + /** @var Repository */ private $config; + /** @var string */ private $separator; + /** + * @param string $separator + */ public function __construct(Repository $config, $separator = '.') { $this->config = $config; @@ -22,6 +27,13 @@ final class Config implements ConfigInterface return $this->getFrom('flasher', $key, $default); } + /** + * @param string $namespace + * @param string $key + * @param mixed $default + * + * @return mixed + */ public function getFrom($namespace, $key, $default = null) { return $this->config->get($namespace . $this->separator . $key, $default); diff --git a/src/Laravel/FlasherServiceProvider.php b/src/Laravel/FlasherServiceProvider.php index e93d4c1b..463252dc 100644 --- a/src/Laravel/FlasherServiceProvider.php +++ b/src/Laravel/FlasherServiceProvider.php @@ -3,16 +3,21 @@ namespace Flasher\Laravel; use Flasher\Laravel\ServiceProvider\ServiceProviderManager; +use Illuminate\Container\Container; use Illuminate\Support\ServiceProvider; final class FlasherServiceProvider extends ServiceProvider { /** * Bootstrap the application events. + * + * @return void */ public function boot() { - $manager = new ServiceProviderManager($this); + /** @var Container $app */ + $app = $this->app; + $manager = new ServiceProviderManager($this, $app); $manager->boot(); } @@ -21,7 +26,9 @@ final class FlasherServiceProvider extends ServiceProvider */ public function register() { - $manager = new ServiceProviderManager($this); + /** @var Container $app */ + $app = $this->app; + $manager = new ServiceProviderManager($this, $app); $manager->register(); } @@ -38,11 +45,14 @@ final class FlasherServiceProvider extends ServiceProvider } /** - * @return \Illuminate\Container\Container + * @return Container */ public function getApplication() { - return $this->app; + /** @var Container $app */ + $app = $this->app; + + return $app; } public function mergeConfigFrom($path, $key) @@ -50,6 +60,9 @@ final class FlasherServiceProvider extends ServiceProvider parent::mergeConfigFrom($path, $key); } + /** + * @param string[] $paths + */ public function publishes(array $paths, $groups = null) { parent::publishes($paths, $groups); @@ -60,6 +73,9 @@ final class FlasherServiceProvider extends ServiceProvider parent::loadTranslationsFrom($path, $namespace); } + /** + * @param string $path + */ public function loadViewsFrom($path, $namespace) { parent::loadViewsFrom($path, $namespace); diff --git a/src/Laravel/Middleware/SessionMiddleware.php b/src/Laravel/Middleware/SessionMiddleware.php index bcc6bd98..9a395255 100755 --- a/src/Laravel/Middleware/SessionMiddleware.php +++ b/src/Laravel/Middleware/SessionMiddleware.php @@ -69,7 +69,11 @@ final class SessionMiddleware } $content = $response->getContent(); - $pos = strripos($content, ''); + if (false === $content) { + return $response; + } + + $pos = (int) strripos($content, ''); $content = substr($content, 0, $pos) . $htmlResponse . substr($content, $pos); $response->setContent($content); @@ -77,7 +81,7 @@ final class SessionMiddleware } /** - * @return array + * @return array */ private function typesMapping() { @@ -93,6 +97,6 @@ final class SessionMiddleware } } - return $mapping; + return $mapping; // @phpstan-ignore-line } } diff --git a/src/Laravel/Observer/FlasherModelObserver.php b/src/Laravel/Observer/FlasherModelObserver.php index 26d995f4..d7c0c624 100644 --- a/src/Laravel/Observer/FlasherModelObserver.php +++ b/src/Laravel/Observer/FlasherModelObserver.php @@ -4,8 +4,8 @@ namespace Flasher\Laravel\Observer; use Flasher\Prime\Config\ConfigInterface; use Flasher\Prime\FlasherInterface; -use Illuminate\Contracts\Translation\Translator; use Illuminate\Database\Eloquent\Model; +use Illuminate\Translation\Translator; final class FlasherModelObserver { @@ -33,6 +33,8 @@ final class FlasherModelObserver /** * Handle the Model "created" event. + * + * @return void */ public function created(Model $model) { @@ -41,6 +43,8 @@ final class FlasherModelObserver /** * Handle the Model "updated" event. + * + * @return void */ public function updated(Model $model) { @@ -49,6 +53,8 @@ final class FlasherModelObserver /** * Handle the Model "deleted" event. + * + * @return void */ public function deleted(Model $model) { @@ -57,6 +63,8 @@ final class FlasherModelObserver /** * Handle the Model "restored" event. + * + * @return void */ public function restored(Model $model) { @@ -65,6 +73,8 @@ final class FlasherModelObserver /** * Handle the Model "force deleted" event. + * + * @return void */ public function forceDeleted(Model $model) { @@ -73,15 +83,17 @@ final class FlasherModelObserver /** * @param string $method + * + * @return void */ private function addFlash($method, Model $model) { - $exludes = $this->config->get('observer_events.exclude', array()); - if (in_array($method, $exludes, true)) { + $excludes = $this->config->get('observer_events.exclude', array()); + if (in_array($method, $excludes, true)) { return; } - if (isset($exludes[$method]) && in_array(get_class($model), $exludes[$method], true)) { + if (isset($excludes[$method]) && in_array(get_class($model), $excludes[$method], true)) { return; } @@ -89,7 +101,14 @@ final class FlasherModelObserver $message = $this->translator->get(sprintf('flasher::messages.flashable.%s.%s', get_class($model), $method)); } else { $message = $this->translator->get(sprintf('flasher::messages.flashable.default.%s', $method)); - $message = str_replace('{{ model }}', substr(strrchr(get_class($model), '\\'), 1), $message); + $replace = strrchr(get_class($model), '\\'); + if (false !== $replace) { + $message = str_replace('{{ model }}', substr($replace, 1), $message); + } + } + + if (is_array($message)) { + return; } $this->flasher->addSuccess($message); diff --git a/src/Laravel/Resources/views/bootstrap.blade.php b/src/Laravel/Resources/views/bootstrap.blade.php index 1c151978..81e850d7 100644 --- a/src/Laravel/Resources/views/bootstrap.blade.php +++ b/src/Laravel/Resources/views/bootstrap.blade.php @@ -1,31 +1,44 @@ getType()) { - case 'success': - $title = 'Success'; - $alertClass = 'alert-success'; - $progressBackgroundColor = '#155724'; - $icon = ''; - break; - case 'error': - $title = 'Error'; - $alertClass = 'alert-danger'; - $progressBackgroundColor = '#721c24'; - $icon = ''; - break; - case 'warning': - $title = 'Warning'; - $alertClass = 'alert-warning'; - $progressBackgroundColor = '#856404'; - $icon = ''; - break; - case 'info': - default: - $title = 'Info'; - $alertClass = 'alert-info'; - $progressBackgroundColor = '#0c5460'; - $icon = ''; - break; - } + +use Flasher\Prime\Envelope; +use Flasher\Prime\Notification\Template; + +if (!isset($envelope) || !$envelope instanceof Envelope) { + return; +} + +$notification = $envelope->getNotification(); +if (!$notification instanceof Template) { + return; +} + +switch ($notification->getType()) { + case 'success': + $title = 'Success'; + $alertClass = 'alert-success'; + $progressBackgroundColor = '#155724'; + $icon = ''; + break; + case 'error': + $title = 'Error'; + $alertClass = 'alert-danger'; + $progressBackgroundColor = '#721c24'; + $icon = ''; + break; + case 'warning': + $title = 'Warning'; + $alertClass = 'alert-warning'; + $progressBackgroundColor = '#856404'; + $icon = ''; + break; + case 'info': + default: + $title = 'Info'; + $alertClass = 'alert-info'; + $progressBackgroundColor = '#0c5460'; + $icon = ''; + break; +} ?>
@@ -42,7 +55,7 @@
diff --git a/src/Laravel/Resources/views/tailwindcss.blade.php b/src/Laravel/Resources/views/tailwindcss.blade.php index 30f6372e..6f28773a 100644 --- a/src/Laravel/Resources/views/tailwindcss.blade.php +++ b/src/Laravel/Resources/views/tailwindcss.blade.php @@ -1,39 +1,52 @@ getType()) { - case 'success': - $title = 'Success'; - $textColor = 'text-green-600'; - $backgroundColor = 'bg-green-600'; - $progressBackgroundColor = 'bg-green-100'; - $borderColor = 'border-green-600'; - $icon = ''; - break; - case 'error': - $title = 'Error'; - $textColor = 'text-red-600'; - $backgroundColor = 'bg-red-600'; - $progressBackgroundColor = 'bg-red-100'; - $borderColor = 'border-red-600'; - $icon = ''; - break; - case 'warning': - $title = 'Warning'; - $textColor = 'text-yellow-600'; - $backgroundColor = 'bg-yellow-600'; - $progressBackgroundColor = 'bg-yellow-100'; - $borderColor = 'border-yellow-600'; - $icon = ''; - break; - case 'info': - default: - $title = 'Info'; - $textColor = 'text-blue-600'; - $backgroundColor = 'bg-blue-600'; - $progressBackgroundColor = 'bg-blue-100'; - $borderColor = 'border-blue-600'; - $icon = ''; - break; - } + +use Flasher\Prime\Envelope; +use Flasher\Prime\Notification\Template; + +if (!isset($envelope) || !$envelope instanceof Envelope) { + return; +} + +$notification = $envelope->getNotification(); +if (!$notification instanceof Template) { + return; +} + +switch ($notification->getType()) { + case 'success': + $title = 'Success'; + $textColor = 'text-green-600'; + $backgroundColor = 'bg-green-600'; + $progressBackgroundColor = 'bg-green-100'; + $borderColor = 'border-green-600'; + $icon = ''; + break; + case 'error': + $title = 'Error'; + $textColor = 'text-red-600'; + $backgroundColor = 'bg-red-600'; + $progressBackgroundColor = 'bg-red-100'; + $borderColor = 'border-red-600'; + $icon = ''; + break; + case 'warning': + $title = 'Warning'; + $textColor = 'text-yellow-600'; + $backgroundColor = 'bg-yellow-600'; + $progressBackgroundColor = 'bg-yellow-100'; + $borderColor = 'border-yellow-600'; + $icon = ''; + break; + case 'info': + default: + $title = 'Info'; + $textColor = 'text-blue-600'; + $backgroundColor = 'bg-blue-600'; + $progressBackgroundColor = 'bg-blue-100'; + $borderColor = 'border-blue-600'; + $icon = ''; + break; +} ?>
@@ -42,10 +55,10 @@

- {{ $envelope->getTitle() ?: $title }} + {{ $notification->getTitle() ?: $title }}

- {{ $envelope->getMessage() }} + {{ $notification->getMessage() }}

diff --git a/src/Laravel/Resources/views/tailwindcss_bg.blade.php b/src/Laravel/Resources/views/tailwindcss_bg.blade.php index 1aba821f..70b402e2 100644 --- a/src/Laravel/Resources/views/tailwindcss_bg.blade.php +++ b/src/Laravel/Resources/views/tailwindcss_bg.blade.php @@ -1,39 +1,52 @@ getType()) { - case 'success': - $title = 'Success'; - $textColor = 'text-green-700'; - $backgroundColor = 'bg-green-50'; - $progressBackgroundColor = 'bg-green-200'; - $borderColor = 'border-green-600'; - $icon = ''; - break; - case 'error': - $title = 'Error'; - $textColor = 'text-red-700'; - $backgroundColor = 'bg-red-50'; - $progressBackgroundColor = 'bg-red-200'; - $borderColor = 'border-red-600'; - $icon = ''; - break; - case 'warning': - $title = 'Warning'; - $textColor = 'text-yellow-700'; - $backgroundColor = 'bg-yellow-50'; - $progressBackgroundColor = 'bg-yellow-200'; - $borderColor = 'border-yellow-600'; - $icon = ''; - break; - case 'info': - default: - $title = 'Info'; - $textColor = 'text-blue-700'; - $backgroundColor = 'bg-blue-50'; - $progressBackgroundColor = 'bg-blue-100'; - $borderColor = 'border-blue-600'; - $icon = ''; - break; - } + +use Flasher\Prime\Envelope; +use Flasher\Prime\Notification\Template; + +if (!isset($envelope) || !$envelope instanceof Envelope) { + return; +} + +$notification = $envelope->getNotification(); +if (!$notification instanceof Template) { + return; +} + +switch ($notification->getType()) { + case 'success': + $title = 'Success'; + $textColor = 'text-green-700'; + $backgroundColor = 'bg-green-50'; + $progressBackgroundColor = 'bg-green-200'; + $borderColor = 'border-green-600'; + $icon = ''; + break; + case 'error': + $title = 'Error'; + $textColor = 'text-red-700'; + $backgroundColor = 'bg-red-50'; + $progressBackgroundColor = 'bg-red-200'; + $borderColor = 'border-red-600'; + $icon = ''; + break; + case 'warning': + $title = 'Warning'; + $textColor = 'text-yellow-700'; + $backgroundColor = 'bg-yellow-50'; + $progressBackgroundColor = 'bg-yellow-200'; + $borderColor = 'border-yellow-600'; + $icon = ''; + break; + case 'info': + default: + $title = 'Info'; + $textColor = 'text-blue-700'; + $backgroundColor = 'bg-blue-50'; + $progressBackgroundColor = 'bg-blue-100'; + $borderColor = 'border-blue-600'; + $icon = ''; + break; +} ?>
@@ -43,10 +56,10 @@

- {{ $envelope->getTitle() ?: $title }} + {{ $notification->getTitle() ?: $title }}

- {{ $envelope->getMessage() }} + {{ $notification->getMessage() }}

diff --git a/src/Laravel/ServiceProvider/Providers/Laravel.php b/src/Laravel/ServiceProvider/Providers/Laravel.php index 7bfa07d7..bd598898 100755 --- a/src/Laravel/ServiceProvider/Providers/Laravel.php +++ b/src/Laravel/ServiceProvider/Providers/Laravel.php @@ -10,7 +10,6 @@ use Flasher\Prime\EventDispatcher\EventDispatcher; use Flasher\Prime\EventDispatcher\EventListener\FilterListener; use Flasher\Prime\EventDispatcher\EventListener\RemoveListener; use Flasher\Prime\EventDispatcher\EventListener\StampsListener; -use Flasher\Prime\Factory\NotificationFactory; use Flasher\Prime\Factory\TemplateFactory; use Flasher\Prime\Filter\Filter; use Flasher\Prime\Flasher; @@ -59,7 +58,10 @@ class Laravel implements ServiceProviderInterface $this->bootServices($this->app); } - protected function bootServices(Application $app) + /** + * @return void + */ + protected function bootServices(Container $app) { $templates = $app['flasher.config']->get('template_factory.templates', array()); foreach ($templates as $template => $options) { @@ -91,6 +93,9 @@ class Laravel implements ServiceProviderInterface $this->registerCommonServices(); } + /** + * @return void + */ protected function registerCommonServices() { $this->app->singleton('flasher', function (Application $app) { @@ -186,6 +191,9 @@ class Laravel implements ServiceProviderInterface $this->app->bind('Flasher\Prime\Factory\NotificationFactoryInterface', 'flasher.template'); } + /** + * @return void + */ protected function registerBladeDirectives() { $startsWith = function ($haystack, $needle) { diff --git a/src/Laravel/ServiceProvider/Providers/Laravel4.php b/src/Laravel/ServiceProvider/Providers/Laravel4.php index e4b1b470..618ee638 100644 --- a/src/Laravel/ServiceProvider/Providers/Laravel4.php +++ b/src/Laravel/ServiceProvider/Providers/Laravel4.php @@ -17,6 +17,7 @@ final class Laravel4 extends Laravel public function boot(FlasherServiceProvider $provider) { + // @phpstan-ignore-next-line $provider->package('php-flasher/flasher-laravel', 'flasher', flasher_path(__DIR__ . '/../../Resources')); $this->registerBladeDirectives(); @@ -32,9 +33,16 @@ final class Laravel4 extends Laravel $this->registerCommonServices(); } + /** + * @return void + */ protected function registerBladeDirectives() { Blade::extend(function ($view, BladeCompiler $compiler) { + if (!method_exists($compiler, 'createMatcher')) { + return ''; + } + $pattern = $compiler->createMatcher('flasher_render'); return preg_replace($pattern, '$1render$2; ?>', $view); diff --git a/src/Laravel/ServiceProvider/Providers/Laravel50.php b/src/Laravel/ServiceProvider/Providers/Laravel50.php index 712530e3..44898351 100644 --- a/src/Laravel/ServiceProvider/Providers/Laravel50.php +++ b/src/Laravel/ServiceProvider/Providers/Laravel50.php @@ -24,6 +24,9 @@ final class Laravel50 extends Laravel $this->bootServices($this->app); } + /** + * @return void + */ protected function registerBladeDirectives() { $startsWith = function ($haystack, $needle) { @@ -35,6 +38,10 @@ final class Laravel50 extends Laravel }; Blade::extend(function ($view, BladeCompiler $compiler) use ($startsWith, $endsWith) { + if (!method_exists($compiler, 'createPlainMatcher')) { + return ''; + } + $pattern = $compiler->createPlainMatcher('flasher_render(.*)'); $matches = array(); diff --git a/src/Laravel/ServiceProvider/Providers/ServiceProviderInterface.php b/src/Laravel/ServiceProvider/Providers/ServiceProviderInterface.php index d1d275d0..fcf11060 100644 --- a/src/Laravel/ServiceProvider/Providers/ServiceProviderInterface.php +++ b/src/Laravel/ServiceProvider/Providers/ServiceProviderInterface.php @@ -11,7 +11,13 @@ interface ServiceProviderInterface */ public function shouldBeUsed(); + /** + * @return void + */ public function boot(FlasherServiceProvider $provider); + /** + * @return void + */ public function register(FlasherServiceProvider $provider); } diff --git a/src/Laravel/ServiceProvider/ResourceManagerHelper.php b/src/Laravel/ServiceProvider/ResourceManagerHelper.php index 65459507..fd154bb4 100644 --- a/src/Laravel/ServiceProvider/ResourceManagerHelper.php +++ b/src/Laravel/ServiceProvider/ResourceManagerHelper.php @@ -8,7 +8,9 @@ final class ResourceManagerHelper { /** * @param string $alias - * @param array $config + * @param array $config + * + * @return void */ public static function process(ResourceManager $responseManager, $alias, $config = null) { @@ -22,9 +24,9 @@ final class ResourceManagerHelper } /** - * @param array $config + * @param array $config * - * @return array + * @return string[] */ private static function getScripts($config) { @@ -32,9 +34,9 @@ final class ResourceManagerHelper } /** - * @param array $config + * @param array $config * - * @return array + * @return string[] */ private static function getStyles($config) { @@ -42,9 +44,9 @@ final class ResourceManagerHelper } /** - * @param array $config + * @param array $config * - * @return array + * @return array */ private static function getOptions($config) { diff --git a/src/Laravel/ServiceProvider/ServiceProviderManager.php b/src/Laravel/ServiceProvider/ServiceProviderManager.php index 3a64baa4..fa19362c 100644 --- a/src/Laravel/ServiceProvider/ServiceProviderManager.php +++ b/src/Laravel/ServiceProvider/ServiceProviderManager.php @@ -3,35 +3,50 @@ namespace Flasher\Laravel\ServiceProvider; use Flasher\Laravel\FlasherServiceProvider; +use Flasher\Laravel\ServiceProvider\Providers\Laravel; +use Flasher\Laravel\ServiceProvider\Providers\Laravel4; +use Flasher\Laravel\ServiceProvider\Providers\Laravel50; +use Flasher\Laravel\ServiceProvider\Providers\Laravel51; use Flasher\Laravel\ServiceProvider\Providers\ServiceProviderInterface; +use Illuminate\Container\Container; final class ServiceProviderManager { + /** @var ServiceProviderInterface|null */ private $provider; /** * @var ServiceProviderInterface[] */ - private $providers = array( - 'Flasher\Laravel\ServiceProvider\Providers\Laravel4', - 'Flasher\Laravel\ServiceProvider\Providers\Laravel50', - 'Flasher\Laravel\ServiceProvider\Providers\Laravel51', - 'Flasher\Laravel\ServiceProvider\Providers\Laravel', - ); + private $providers; + /** @var FlasherServiceProvider */ private $notifyServiceProvider; - public function __construct(FlasherServiceProvider $notifyServiceProvider) + public function __construct(FlasherServiceProvider $notifyServiceProvider, Container $app) { $this->notifyServiceProvider = $notifyServiceProvider; + + $this->providers = array( + new Laravel4($app), + new Laravel50($app), + new Laravel51($app), + new Laravel($app), + ); } + /** + * @return void + */ public function boot() { $provider = $this->resolveServiceProvider(); $provider->boot($this->notifyServiceProvider); } + /** + * @return void + */ public function register() { $provider = $this->resolveServiceProvider(); @@ -47,9 +62,7 @@ final class ServiceProviderManager return $this->provider; } - foreach ($this->providers as $providerClass) { - $provider = new $providerClass($this->notifyServiceProvider->getApplication()); - + foreach ($this->providers as $provider) { if ($provider->shouldBeUsed()) { return $this->provider = $provider; } diff --git a/src/Laravel/Storage/Storage.php b/src/Laravel/Storage/Storage.php index 149f9df2..ba816206 100644 --- a/src/Laravel/Storage/Storage.php +++ b/src/Laravel/Storage/Storage.php @@ -5,7 +5,6 @@ namespace Flasher\Laravel\Storage; use Flasher\Prime\Envelope; use Flasher\Prime\Stamp\UuidStamp; use Flasher\Prime\Storage\StorageInterface; -use Illuminate\Session\SessionManager; use Illuminate\Session\Store; final class Storage implements StorageInterface @@ -13,12 +12,12 @@ final class Storage implements StorageInterface const ENVELOPES_NAMESPACE = 'flasher::envelopes'; /** - * @var SessionManager|Store + * @var Store */ private $session; /** - * @param SessionManager|Store $session + * @param Store $session */ public function __construct($session) { @@ -44,7 +43,13 @@ final class Storage implements StorageInterface $store = $this->all(); foreach ($store as $index => $envelope) { - $uuid = $envelope->get('Flasher\Prime\Stamp\UuidStamp')->getUuid(); + $uuidStamp = $envelope->get('Flasher\Prime\Stamp\UuidStamp'); + + if (!$uuidStamp instanceof UuidStamp) { + continue; + } + + $uuid = $uuidStamp->getUuid(); if (!isset($map[$uuid])) { continue; @@ -63,7 +68,13 @@ final class Storage implements StorageInterface $map = UuidStamp::indexByUuid($envelopes); $store = array_filter($this->all(), function (Envelope $envelope) use ($map) { - $uuid = $envelope->get('Flasher\Prime\Stamp\UuidStamp')->getUuid(); + $uuidStamp = $envelope->get('Flasher\Prime\Stamp\UuidStamp'); + + if (!$uuidStamp instanceof UuidStamp) { + return false; + } + + $uuid = $uuidStamp->getUuid(); return !isset($map[$uuid]); }); diff --git a/src/Laravel/Template/BladeEngine.php b/src/Laravel/Template/BladeEngine.php index d5c39aa6..7a699cea 100644 --- a/src/Laravel/Template/BladeEngine.php +++ b/src/Laravel/Template/BladeEngine.php @@ -3,16 +3,17 @@ namespace Flasher\Laravel\Template; use Flasher\Prime\Template\EngineInterface; +use Illuminate\View\Factory; final class BladeEngine implements EngineInterface { /** - * @var + * @var Factory */ private $engine; /** - * @param $engine + * @param Factory $engine */ public function __construct($engine) { @@ -21,6 +22,8 @@ final class BladeEngine implements EngineInterface public function render($name, array $context = array()) { - return (string) $this->engine->make($name, $context); + $view = $this->engine->make($name, $context); + + return $view->render(); } } diff --git a/src/Laravel/helpers.php b/src/Laravel/helpers.php index 070608e1..8fee9df5 100644 --- a/src/Laravel/helpers.php +++ b/src/Laravel/helpers.php @@ -1,15 +1,19 @@ $options + * @param StampInterface[] $stamps * - * @return \Flasher\Prime\Flasher + * @return FlasherInterface */ function flash($message = null, $type = 'success', array $options = array(), array $stamps = array()) { - /** @var \Flasher\Prime\FlasherInterface $flasher */ $flasher = app('flasher'); if (null === $message && 0 === func_num_args()) { @@ -24,8 +28,10 @@ if (!function_exists('flasher')) { /** * @param string $message * @param string $type + * @param array $options + * @param StampInterface[] $stamps * - * @return \Flasher\Prime\Flasher + * @return FlasherInterface */ function flasher($message = null, $type = 'success', array $options = array(), array $stamps = array()) { diff --git a/src/Prime/Flasher.php b/src/Prime/Flasher.php index f2af5748..922b51c5 100644 --- a/src/Prime/Flasher.php +++ b/src/Prime/Flasher.php @@ -4,8 +4,12 @@ namespace Flasher\Prime; use Flasher\Prime\Config\ConfigInterface; use Flasher\Prime\Factory\NotificationFactoryInterface; +use Flasher\Prime\Notification\NotificationBuilderInterface; use Flasher\Prime\Response\ResponseManagerInterface; +/** + * @mixin NotificationBuilderInterface + */ final class Flasher implements FlasherInterface { /**