:
65 | * mixed))))))))
66 | */
67 | public function get(string|array $key, mixed $default = null): mixed;
68 | }
69 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | ## Table of Contents
25 |
26 | - [About PHPFlasher Laravel Adapter](#about-phpflasher-laravel-adapter)
27 | - [Features](#features)
28 | - [Supported Versions](#supported-versions)
29 | - [Installation](#installation)
30 | - [Core Package](#core-package)
31 | - [Adapters](#adapters)
32 | - [Configuration](#configuration)
33 | - [Configuration File](#configuration-file)
34 | - [Configuration Options](#configuration-options)
35 | - [Quick Start](#quick-start)
36 | - [Usage Examples](#usage-examples)
37 | - [Adapters Overview](#adapters-overview)
38 | - [Official Documentation](#official-documentation)
39 | - [Contributors and Sponsors](#contributors-and-sponsors)
40 | - [Contact](#contact)
41 | - [License](#license)
42 |
43 | ## About PHPFlasher Laravel Adapter
44 |
45 | **PHPFlasher Laravel Adapter** is an open-source package that seamlessly integrates PHPFlasher's powerful flash messaging capabilities into your **Laravel** applications. It simplifies the process of adding flash messages, providing an intuitive API to enhance user experience with minimal setup.
46 |
47 | With PHPFlasher Laravel Adapter, you can effortlessly display success, error, warning, and informational messages to your users, ensuring clear communication of application states and actions.
48 |
49 | ## Features
50 |
51 | - **Seamless Laravel Integration**: Designed specifically for Laravel, ensuring compatibility and ease of use.
52 | - **Multiple Notification Libraries**: Supports various frontend libraries like Toastr, Noty, SweetAlert, and Notyf.
53 | - **Flexible Configuration**: Customize the appearance and behavior of flash messages to fit your application's needs.
54 | - **Intuitive API**: Simple methods to create and manage flash messages without boilerplate code.
55 | - **Extensible**: Easily add or create new adapters for different frontend libraries.
56 |
57 | ## Supported Versions
58 |
59 | | PHPFlasher Laravel Adapter Version | PHP Version | Laravel Version |
60 | |------------------------------------|-------------|-----------------|
61 | | **v2.x** | ≥ 8.2 | ≥ 11 |
62 | | **v1.x** | ≥ 5.3 | ≥ 4.0 |
63 |
64 | > **Note:** Ensure your project meets the PHP and Laravel version requirements for the PHPFlasher Laravel Adapter version you intend to use. For older PHP or Laravel versions, refer to [PHPFlasher v1.x](https://github.com/php-flasher/flasher-laravel/tree/1.x).
65 |
66 | ## Installation
67 |
68 | ### Core Package
69 |
70 | Install the PHPFlasher Laravel Adapter via Composer:
71 |
72 | ```bash
73 | composer require php-flasher/flasher-laravel
74 | ```
75 |
76 | After installation, set up the necessary assets:
77 |
78 | ```shell
79 | php artisan flasher:install
80 | ```
81 |
82 | > **Note:** PHPFlasher automatically injects the necessary JavaScript and CSS assets into your Blade templates. No additional steps are required for asset injection.
83 |
84 | ### Adapters
85 |
86 | PHPFlasher provides various adapters for different notification libraries. Below is an overview of available adapters for Laravel:
87 |
88 | - [flasher-toastr-laravel](https://github.com/php-flasher/flasher-toastr-laravel) - Laravel Adapter
89 | - [flasher-noty-laravel](https://github.com/php-flasher/flasher-noty-laravel) - Laravel Adapter
90 | - [flasher-notyf-laravel](https://github.com/php-flasher/flasher-notyf-laravel) - Laravel Adapter
91 | - [flasher-sweetalert-laravel](https://github.com/php-flasher/flasher-sweetalert-laravel) - Laravel Adapter
92 |
93 | For detailed installation and usage instructions for each adapter, refer to their respective `README.md`.
94 |
95 | ## Configuration
96 |
97 | After installing the PHPFlasher Laravel Adapter, you can configure it by publishing the configuration file or by modifying it directly.
98 |
99 | ### Configuration File
100 |
101 | If you need to customize the default settings, publish the configuration file using the following command:
102 |
103 | ```bash
104 | php artisan flasher:install --config
105 | ```
106 |
107 | This will create a file at `config/flasher.php` with the following content:
108 |
109 | ```php
110 | 'flasher',
119 |
120 | // Path to the main PHPFlasher JavaScript file
121 | 'main_script' => '/vendor/flasher/flasher.min.js',
122 |
123 | // List of CSS files to style your notifications
124 | 'styles' => [
125 | '/vendor/flasher/flasher.min.css',
126 | ],
127 |
128 | // Set global options for all notifications (optional)
129 | // 'options' => [
130 | // 'timeout' => 5000, // Time in milliseconds before the notification disappears
131 | // 'position' => 'top-right', // Where the notification appears on the screen
132 | // ],
133 |
134 | // Automatically inject JavaScript and CSS assets into your HTML pages
135 | 'inject_assets' => true,
136 |
137 | // Enable message translation using Laravel's translation service
138 | 'translate' => true,
139 |
140 | // URL patterns to exclude from asset injection and flash_bag conversion
141 | 'excluded_paths' => [],
142 |
143 | // Map Laravel flash message keys to notification types
144 | 'flash_bag' => [
145 | 'success' => ['success'],
146 | 'error' => ['error', 'danger'],
147 | 'warning' => ['warning', 'alarm'],
148 | 'info' => ['info', 'notice', 'alert'],
149 | ],
150 |
151 | // Set criteria to filter which notifications are displayed (optional)
152 | // 'filter' => [
153 | // 'limit' => 5, // Maximum number of notifications to show at once
154 | // ],
155 |
156 | // Define notification presets to simplify notification creation (optional)
157 | // 'presets' => [
158 | // 'entity_saved' => [
159 | // 'type' => 'success',
160 | // 'title' => 'Entity saved',
161 | // 'message' => 'Entity saved successfully',
162 | // ],
163 | // ],
164 | ]);
165 | ```
166 |
167 | ### Configuration Options
168 |
169 | | **Option** | **Description** |
170 | |------------------|---------------------------------------------------------------------------------------------------------------------------|
171 | | `default` | **String**: The default notification library to use (e.g., `'flasher'`, `'toastr'`, `'noty'`, `'notyf'`, `'sweetalert'`). |
172 | | `main_script` | **String**: Path to the main PHPFlasher JavaScript file. |
173 | | `styles` | **Array**: List of CSS files to style your notifications. |
174 | | `options` | **Array** (Optional): Global options for all notifications (e.g., `'timeout'`, `'position'`). |
175 | | `inject_assets` | **Boolean**: Whether to automatically inject JavaScript and CSS assets into your HTML pages. |
176 | | `translate` | **Boolean**: Enable message translation using Laravel’s translation service. |
177 | | `excluded_paths` | **Array**: URL patterns to exclude from asset injection and flash_bag conversion. |
178 | | `flash_bag` | **Array**: Map Laravel flash message keys to notification types. |
179 | | `filter` | **Array** (Optional): Criteria to filter which notifications are displayed (e.g., `'limit'`). |
180 | | `presets` | **Array** (Optional): Define notification presets to simplify notification creation. |
181 |
182 | ## Quick Start
183 |
184 | To display a notification message, you can either use the `flash()` helper function or obtain an instance of `flasher` from the service container. Then, before returning a view or redirecting, call the desired method (`success()`, `error()`, etc.) and pass in the message to be displayed.
185 |
186 | ### Using the `flash()` Helper
187 |
188 | ```php
189 | back();
204 | }
205 | }
206 | ```
207 |
208 | ### Using the `flasher` Service
209 |
210 | ```php
211 | success('Your changes have been saved!');
227 |
228 | // ... redirect or render the view
229 | }
230 |
231 | public function update()
232 | {
233 | // Your logic here
234 |
235 | app('flasher')->error('An error occurred while updating.');
236 |
237 | return redirect()->back();
238 | }
239 | }
240 | ```
241 |
242 | ## Usage Examples
243 |
244 | ### Success Message
245 |
246 | ```php
247 | flash()->success('Operation completed successfully!');
248 | ```
249 |
250 | ### Error Message
251 |
252 | ```php
253 | flash()->error('An error occurred.');
254 | ```
255 |
256 | ### Info Message
257 |
258 | ```php
259 | flash()->info('This is an informational message.');
260 | ```
261 |
262 | ### Warning Message
263 |
264 | ```php
265 | flash()->warning('This is a warning message.');
266 | ```
267 |
268 | ### Passing Options
269 |
270 | ```php
271 | flash()->success('Custom message with options.', ['timeout' => 3000, 'position' => 'bottom-left']);
272 | ```
273 |
274 | ### Using presets
275 |
276 | Define a preset in your `config/flasher.php`:
277 |
278 | ```php
279 | [
289 | 'entity_saved' => [
290 | 'type' => 'success',
291 | 'title' => 'Entity Saved',
292 | 'message' => 'The entity has been saved successfully.',
293 | ],
294 | 'entity_deleted' => [
295 | 'type' => 'warning',
296 | 'title' => 'Entity Deleted',
297 | 'message' => 'The entity has been deleted.',
298 | ],
299 | ],
300 | ]);
301 | ```
302 |
303 | Use the preset in your controller:
304 |
305 | ```php
306 | preset('entity_saved');
326 |
327 | return redirect()->route('books.index');
328 | }
329 |
330 | /**
331 | * Delete an existing book entity.
332 | *
333 | * @return RedirectResponse
334 | */
335 | public function deleteBook(): RedirectResponse
336 | {
337 | // Your deletion logic here (e.g., finding and deleting the book)
338 |
339 | // Trigger the 'entity_deleted' preset
340 | flash()->preset('entity_deleted');
341 |
342 | return redirect()->route('books.index');
343 | }
344 | }
345 | ```
346 |
347 | ## Adapters Overview
348 |
349 | PHPFlasher supports various adapters to integrate seamlessly with different frontend libraries. Below is an overview of available adapters for Laravel:
350 |
351 | | Adapter Repository | Description |
352 | |-----------------------------------------------------------------------------------------|--------------------------------|
353 | | [flasher-laravel](https://github.com/php-flasher/flasher-laravel) | Laravel framework adapter |
354 | | [flasher-toastr-laravel](https://github.com/php-flasher/flasher-toastr-laravel) | Toastr adapter for Laravel |
355 | | [flasher-noty-laravel](https://github.com/php-flasher/flasher-noty-laravel) | Noty adapter for Laravel |
356 | | [flasher-notyf-laravel](https://github.com/php-flasher/flasher-notyf-laravel) | Notyf adapter for Laravel |
357 | | [flasher-sweetalert-laravel](https://github.com/php-flasher/flasher-sweetalert-laravel) | SweetAlert adapter for Laravel |
358 |
359 | > **Note:** Each adapter has its own repository. For detailed installation and usage instructions, please refer to the [Official Documentation](https://php-flasher.io).
360 |
361 | ## Official Documentation
362 |
363 | Comprehensive documentation for PHPFlasher is available at [https://php-flasher.io](https://php-flasher.io). Here you will find detailed guides, API references, and advanced usage examples to help you get the most out of PHPFlasher.
364 |
365 | ## Contributors and sponsors
366 |
367 | Join our team of contributors and make a lasting impact on our project!
368 |
369 | We are always looking for passionate individuals who want to contribute their skills and ideas.
370 | Whether you're a developer, designer, or simply have a great idea, we welcome your participation and collaboration.
371 |
372 | Shining stars of our community:
373 |
374 |
375 |
376 |
377 |
394 |
395 |
396 |
397 |
398 |
399 |
400 | ## Contact
401 |
402 | PHPFlasher is being actively developed by yoeunes.
403 | You can reach out with questions, bug reports, or feature requests on any of the following:
404 |
405 | - [Github Issues](https://github.com/php-flasher/php-flasher/issues)
406 | - [Github](https://github.com/yoeunes)
407 | - [Twitter](https://twitter.com/yoeunes)
408 | - [Linkedin](https://www.linkedin.com/in/younes--ennaji/)
409 | - [Email me directly](mailto:younes.ennaji.pro@gmail.com)
410 |
411 | ## License
412 |
413 | PHPFlasher is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
414 |
415 | Made with ❤️ by Younes ENNAJI
416 |
--------------------------------------------------------------------------------
/Resources/config.php:
--------------------------------------------------------------------------------
1 | PHPFlasher configuration
15 | */
16 | return Configuration::from([
17 | // Default notification library (e.g., 'flasher', 'toastr', 'noty', 'notyf', 'sweetalert')
18 | 'default' => 'flasher',
19 |
20 | // Path to the main PHPFlasher JavaScript file
21 | 'main_script' => '/vendor/flasher/flasher.min.js',
22 |
23 | // List of CSS files to style your notifications
24 | 'styles' => [
25 | '/vendor/flasher/flasher.min.css',
26 | ],
27 |
28 | // Set global options for all notifications (optional)
29 | // 'options' => [
30 | // 'timeout' => 5000, // Time in milliseconds before the notification disappears
31 | // 'position' => 'top-right', // Where the notification appears on the screen
32 | // ],
33 |
34 | // Automatically inject JavaScript and CSS assets into your HTML pages
35 | 'inject_assets' => true,
36 |
37 | // Enable message translation using Laravel's translation service
38 | 'translate' => true,
39 |
40 | // URL patterns to exclude from asset injection and flash_bag conversion
41 | 'excluded_paths' => [],
42 |
43 | // Map Laravel flash message keys to notification types
44 | 'flash_bag' => [
45 | 'success' => ['success'],
46 | 'error' => ['error', 'danger'],
47 | 'warning' => ['warning', 'alarm'],
48 | 'info' => ['info', 'notice', 'alert'],
49 | ],
50 |
51 | // Set criteria to filter which notifications are displayed (optional)
52 | // 'filter' => [
53 | // 'limit' => 5, // Maximum number of notifications to show at once
54 | // ],
55 |
56 | // Define notification presets to simplify notification creation (optional)
57 | // 'presets' => [
58 | // 'entity_saved' => [
59 | // 'type' => 'success',
60 | // 'title' => 'Entity saved',
61 | // 'message' => 'Entity saved successfully',
62 | // ],
63 | // ],
64 | ]);
65 |
--------------------------------------------------------------------------------
/Storage/SessionBag.php:
--------------------------------------------------------------------------------
1 | session->get(self::ENVELOPES_NAMESPACE, []);
48 |
49 | return $envelopes;
50 | }
51 |
52 | /**
53 | * {@inheritdoc}
54 | *
55 | * Stores notification envelopes in the session.
56 | *
57 | * @param Envelope[] $envelopes The notification envelopes to store
58 | */
59 | public function set(array $envelopes): void
60 | {
61 | $this->session->put(self::ENVELOPES_NAMESPACE, $envelopes);
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/Support/PluginServiceProvider.php:
--------------------------------------------------------------------------------
1 | plugin = $this->createPlugin();
55 |
56 | $this->registerConfiguration();
57 | $this->afterRegister();
58 | }
59 |
60 | /**
61 | * Bootstrap services after all providers are registered.
62 | *
63 | * This method:
64 | * 1. Registers the plugin factory
65 | * 2. Calls the afterBoot hook for customization
66 | */
67 | public function boot(): void
68 | {
69 | $this->registerFactory();
70 | $this->afterBoot();
71 | }
72 |
73 | /**
74 | * Get the plugin's configuration file path.
75 | *
76 | * @return string The absolute path to the configuration file
77 | */
78 | public function getConfigurationFile(): string
79 | {
80 | return rtrim($this->getResourcesDir(), '/').'/config.php';
81 | }
82 |
83 | /**
84 | * Get a configuration value with optional default.
85 | *
86 | * @param string|null $key The configuration key to retrieve, or null for all config
87 | * @param mixed $default The default value to return if the key doesn't exist
88 | *
89 | * @return mixed The configuration value
90 | */
91 | protected function getConfig(?string $key = null, mixed $default = null): mixed
92 | {
93 | /** @var Repository $config */
94 | $config = $this->app->make('config');
95 |
96 | return $key ? $config->get('flasher.'.$key, $default) : $config->get('flasher');
97 | }
98 |
99 | /**
100 | * Get the plugin's resources directory path.
101 | *
102 | * @return string The absolute path to the resources directory
103 | */
104 | protected function getResourcesDir(): string
105 | {
106 | $r = new \ReflectionClass($this);
107 |
108 | return pathinfo($r->getFileName() ?: '', \PATHINFO_DIRNAME).'/Resources/';
109 | }
110 |
111 | /**
112 | * Register the plugin's configuration.
113 | *
114 | * This method merges the plugin's default configuration with any user-defined
115 | * configuration and registers it with Laravel's config repository.
116 | */
117 | protected function registerConfiguration(): void
118 | {
119 | if ($this->app instanceof CachesConfiguration && $this->app->configurationIsCached()) {
120 | return;
121 | }
122 |
123 | $alias = $this->plugin->getAlias();
124 | $config = $this->app->make('config');
125 |
126 | $key = 'flasher' === $alias ? $alias : "flasher.plugins.$alias";
127 | /**
128 | * @var array{
129 | * scripts?: string|string[],
130 | * styles?: string|string[],
131 | * options?: array,
132 | * } $current
133 | */
134 | $current = $config->get($key, []);
135 |
136 | $config->set($key, $this->plugin->normalizeConfig($current));
137 | }
138 |
139 | /**
140 | * Hook method executed after registration.
141 | *
142 | * Child classes can override this method to add custom registration logic.
143 | */
144 | protected function afterRegister(): void
145 | {
146 | }
147 |
148 | /**
149 | * Hook method executed after boot.
150 | *
151 | * Child classes can override this method to add custom boot logic.
152 | */
153 | protected function afterBoot(): void
154 | {
155 | }
156 |
157 | /**
158 | * Register the plugin's notification factory.
159 | *
160 | * This method:
161 | * 1. Registers the factory as a singleton
162 | * 2. Registers any aliases for the factory
163 | * 3. Adds the factory to the factory locator
164 | */
165 | protected function registerFactory(): void
166 | {
167 | $this->app->singleton($this->plugin->getServiceId(), function (Application $app) {
168 | $factory = $this->plugin->getFactory();
169 |
170 | return new $factory($app->make('flasher.storage_manager'));
171 | });
172 |
173 | $identifier = $this->plugin->getServiceId();
174 | foreach ((array) $this->plugin->getServiceAliases() as $alias) {
175 | $this->app->alias($identifier, $alias);
176 | }
177 |
178 | $this->app->extend('flasher.factory_locator', function (NotificationFactoryLocator $factoryLocator, Application $app) {
179 | $factoryLocator->addFactory($this->plugin->getAlias(), fn () => $app->make($this->plugin->getServiceId()));
180 |
181 | return $factoryLocator;
182 | });
183 | }
184 | }
185 |
--------------------------------------------------------------------------------
/Template/BladeTemplateEngine.php:
--------------------------------------------------------------------------------
1 | $context The template variables
39 | *
40 | * @return string The rendered template
41 | */
42 | public function render(string $name, array $context = []): string
43 | {
44 | return $this->blade->make($name, $context)->render();
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Translation/Translator.php:
--------------------------------------------------------------------------------
1 | $parameters The parameters for variable substitution
43 | * @param string|null $locale The locale to use, or null for default
44 | *
45 | * @return string The translated string
46 | */
47 | public function translate(string $id, array $parameters = [], ?string $locale = null): string
48 | {
49 | $parameters = $this->formatParameters($parameters);
50 |
51 | $translation = $this->translator->has('flasher::messages.'.$id, $locale)
52 | ? $this->translator->get('flasher::messages.'.$id, $parameters, $locale)
53 | : ($this->translator->has('messages.'.$id, $locale)
54 | ? $this->translator->get('messages.'.$id, $parameters, $locale)
55 | : $this->translator->get($id, $parameters, $locale));
56 |
57 | if (!\is_string($translation)) {
58 | return $id;
59 | }
60 |
61 | return $translation;
62 | }
63 |
64 | /**
65 | * {@inheritdoc}
66 | *
67 | * Gets the current locale from Laravel's translator.
68 | *
69 | * @return string The current locale code
70 | */
71 | public function getLocale(): string
72 | {
73 | return $this->translator->getLocale();
74 | }
75 |
76 | /**
77 | * Formats the parameters by stripping the colon prefix from keys for Laravel's translator.
78 | *
79 | * This ensures compatibility between PHPFlasher's parameter format (:parameter)
80 | * and Laravel's parameter format (parameter).
81 | *
82 | * @param array $parameters The parameters with potential colon prefixes
83 | *
84 | * @return array The formatted parameters
85 | */
86 | private function formatParameters(array $parameters): array
87 | {
88 | foreach ($parameters as $key => $value) {
89 | $parameters[ltrim($key, ':')] = $value;
90 | }
91 |
92 | return $parameters;
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/Translation/lang/ar/messages.php:
--------------------------------------------------------------------------------
1 | Key-value pairs of message identifiers and translations
16 | */
17 | return Flasher\Prime\Translation\Messages::get('ar');
18 |
--------------------------------------------------------------------------------
/Translation/lang/de/messages.php:
--------------------------------------------------------------------------------
1 | Key-value pairs of message identifiers and translations
16 | */
17 | return Flasher\Prime\Translation\Messages::get('de');
18 |
--------------------------------------------------------------------------------
/Translation/lang/en/messages.php:
--------------------------------------------------------------------------------
1 | Key-value pairs of message identifiers and translations
16 | */
17 | return Flasher\Prime\Translation\Messages::get('en');
18 |
--------------------------------------------------------------------------------
/Translation/lang/es/messages.php:
--------------------------------------------------------------------------------
1 | Key-value pairs of message identifiers and translations
16 | */
17 | return Flasher\Prime\Translation\Messages::get('es');
18 |
--------------------------------------------------------------------------------
/Translation/lang/fr/messages.php:
--------------------------------------------------------------------------------
1 | Key-value pairs of message identifiers and translations
16 | */
17 | return Flasher\Prime\Translation\Messages::get('fr');
18 |
--------------------------------------------------------------------------------
/Translation/lang/pt/messages.php:
--------------------------------------------------------------------------------
1 | Key-value pairs of message identifiers and translations
16 | */
17 | return Flasher\Prime\Translation\Messages::get('pt');
18 |
--------------------------------------------------------------------------------
/Translation/lang/ru/messages.php:
--------------------------------------------------------------------------------
1 | Key-value pairs of message identifiers and translations
16 | */
17 | return Flasher\Prime\Translation\Messages::get('ru');
18 |
--------------------------------------------------------------------------------
/Translation/lang/zh/messages.php:
--------------------------------------------------------------------------------
1 | Key-value pairs of message identifiers and translations
16 | */
17 | return Flasher\Prime\Translation\Messages::get('zh');
18 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "php-flasher/flasher-laravel",
3 | "type": "library",
4 | "license": "MIT",
5 | "homepage": "https://php-flasher.io",
6 | "description": "Seamlessly integrate flash notifications into your Laravel applications with PHPFlasher. Enhance user feedback and engagement with minimal setup.",
7 | "keywords": [
8 | "laravel",
9 | "php",
10 | "flash-notifications",
11 | "phpflasher",
12 | "user-feedback",
13 | "open-source"
14 | ],
15 | "support": {
16 | "issues": "https://github.com/php-flasher/php-flasher/issues",
17 | "source": "https://github.com/php-flasher/php-flasher"
18 | },
19 | "authors": [
20 | {
21 | "name": "Younes ENNAJI",
22 | "email": "younes.ennaji.pro@gmail.com",
23 | "homepage": "https://www.linkedin.com/in/younes--ennaji/",
24 | "role": "Developer"
25 | }
26 | ],
27 | "minimum-stability": "dev",
28 | "prefer-stable": true,
29 | "require": {
30 | "php": ">=8.2",
31 | "illuminate/support": "^11.0|^12.0",
32 | "php-flasher/flasher": "^2.1.6"
33 | },
34 | "autoload": {
35 | "psr-4": {
36 | "Flasher\\Laravel\\": ""
37 | }
38 | },
39 | "config": {
40 | "preferred-install": "dist",
41 | "sort-packages": true
42 | },
43 | "extra": {
44 | "phpstan": {
45 | "includes": [
46 | "extension.neon"
47 | ]
48 | },
49 | "laravel": {
50 | "providers": [
51 | "Flasher\\Laravel\\FlasherServiceProvider"
52 | ],
53 | "aliases": {
54 | "Flasher": "Flasher\\Laravel\\Facade\\Flasher"
55 | }
56 | }
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/extension.neon:
--------------------------------------------------------------------------------
1 | parameters:
2 | stubFiles:
3 | - Phpstan/stubs/Repository.stub
4 | - Phpstan/stubs/ApplicationTestingHooks.stub
5 |
--------------------------------------------------------------------------------