PHP Classes

Laravel Plugin System: Extend Laravel application features using plugins

Recommend this page to a friend!
  Info   Documentation   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not yet rated by the usersTotal: 50 This week: 1All time: 10,720 This week: 42Up
Version License PHP version Categories
laravel-plugins 1.0.0The PHP License5PHP 5, Libraries, Language, Design Pa...
Description 

Author

This package can extend Laravel application features using plugins.

It provides base classes that applications can extend to manage plugins that implement new features.

Plugins can be a set of classes that implement new models, views, and controllers.

Innovation Award
PHP Programming Innovation award nominee
September 2021
Number 8
Plugins are additional components that can extend the functionality of an application or package.

Therefore those plugins can be helpful to improve the utility of an existing package.

This package implements the base of a plugin system that can improve the functionality of a PHP package based on the Laravel framework.

Manuel Lemos
Picture of Arumugam P
  Performance   Level  
Innovation award
Innovation award
Nominee: 2x

Winner: 1x

 

Documentation

laravel-plugins

Plugin system for Laravel 5.x and Lumen 5.x. Plugins can overwrite and extend each other.

Usage

For Lumen add to bootstrap/app.php: $app->register(\Astutesixface\LaravelPlugins\PluginServiceProvider::class);

For Laravel add to 'providers' array in config/app.php: \Astutesixface\LaravelPlugins\PluginServiceProvider::class,

Create a plugin

Structure

Plugins must be in app/Plugins. Example plugin structure: - Test - Http

- Controllers
  - TestController.php

- views

- test.blade.php

- migrations

- 2018_06_15_000000_create_test_table.php

- routes.php - TestPlugin.php

The TestPlugin class must extend the Astutesixface\LaravelPlugins\Plugin class, containing a unique $name property and a boot() method.

Views

In the boot() method of your plugin call $this->enableViews(). Optional you can pass a relative path to the views directory, default to views. Views automatically have a namespace ("plugin:{name}"), the name is defined by the the main plugin class in a camel case format, with Plugin stripped from the end. For the example above it would be plugin:test. To render a view you can either write the namespace yourself or use the helper method view() in the plugin class. For example view('plugin:test::some.view.name');

Routes

In the boot() method of your plugin call $this->enableRoutes(). Optional you can pass a relative path to the routes file, default to routes.php. You automatically have access to the $app variable. Routes are automatically grouped to your plugin namespace, so you only have to type the controller name without the namespace.

Controllers

Controllers must be in PluginDirectory->Http->Controllers.

Migrations

In the boot() method of your plugin call $this->enableMigrations(). Optional you can pass a relative path to the migrations directory, default to migrations. Keep in mind that migrations must follow the yyyy_mm_dd_tttt_<name>.php naming convention, for example 2014_10_12_000000_create_users_table.php would be a valid migration.

How to extend another plugin

see examples/extend

ToDo

  • Move plugin directory and project namespace to publishable config file

  Files folder image Files (14)  
File Role Description
Files folder image.github (1 directory)
Files folder imageexamples (1 directory)
Files folder imagesrc (5 files)
Plain text file composer.json Data Auxiliary data
Plain text file README.md Doc. Documentation

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:50
This week:1
All time:10,720
This week:42Up