Laravel extensions work like addons. By default it scans the extensions
directory for package directories containing a extension.php
file.
An extension can depend on other extensions.
- Optional Uses laradic/themes for handling themes.
- Optional Uses laradic/config for handling config.
Using themes and config will pretty much make using extensions using the namespace, an example:
$extension = Extensions::get('laradic/admin');
$view = View::get('laradic/admin:view.path');
$configKeyValue = Config::get('laradic/admin:config.key');
# Save the altered config to file or db
Config::getLoader()->set('laradic/admin:config.key', 'value');
Check laradic/admin or laradic/docit for a working implementation.
- app
- bootstrap
- extensions
- vendor
- package
- resources
- config
- migrations
- seeds
- theme
- assets
- views
- src
- PackageServiceProvider.php
- composer.json
- MyExtension.php
- vendor
namespace Vendor\My;
use Illuminate\Contracts\Foundation\Application;
use Laradic\Extensions\Extension;
use Laradic\Extensions\ExtensionCollection;
class MyExtension extends Extension
{
protected $version = '1.0.0';
protected $dependencies = [
'vendor/extension1'
];
protected $provides = [ ];
public static function getInfo()
{
return [
'name' => 'My Extension',
'slug' => 'vendor/my',
'description' => 'A ext',
'author' => 'me'
];
}
public function boot()
{
}
public function register()
{
}
}
register
is always calledboot
is called only if the extension is installedinstall
anduninstall
are called on installation and uninstall.
# Shows an overview of all extensions
php artisan extensions:list
# Install an extension
php artisan extensions:install vendor/package
# Uninstall an extension
php artisan extensions:uninstall vendor/package
# Create an extension
php artisan extensions:create vendor/package [extensions-path]
Check out the API documentation for a complete overview.
Method | Description |
---|---|
ExtensionFactory | API doc |
Extensions::get('vendor/package') |
Returns the Extension instance |
Extensions::has('vendor/package') |
Returns bool |
Extensions::all() |
Returns a sorted by dependency array containing Extension instances |
Extensions::addPath($path) |
Adds a path to search for extensions (like the extensions directory) |
Extensions::locateAndRegisterAll() |
Returns bool |
Extensions::register('vendor/package') |
Returns bool |
Extensions::sortByDependencies() |
Returns bool |
Extensions::createFromFile('vendor/package') |
Returns bool |
Extensions::has('vendor/package') |
Returns bool |
Extensions::has('vendor/package') |
Returns bool |
Extension | API doc |
$extension->isInstalled() |
Returns bool |
$extension->install() |
Installs the extension |
$extension->uninstall() |
Uninstalls the extension |
$extension->canInstall() |
Returns bool , checks if the dependencies for this extension are installed |
$extension->canUninstall() |
Returns bool , checks if other installed extensions depend on this extension |
$extension->getDependencies() |
Returns array |
$extension->getSlug() |
Returns string |
$extension->getName() |
Returns string |
$extension->getProperties() |
Returns the extension.php array , can be accessed using $extension['dot.notation.key'] aswell |
extension.installing
extension.installed
extension.uninstalling
extension.uninstalled
extension.registering
extension.registered
extension.booting
extension.booted
return array(
'paths' => array(
base_path('extensions')
)
);