pionl / laravel-config-class-gate by pionl

Enables loading classes (or objects) via config files in Laravel
16
1
2
Package Data
Maintainer Username: pionl
Maintainer Contact: martin.kluska@imakers.cz (Martin Kluska)
Package Create Date: 2016-10-27
Package Last Update: 2016-10-27
Language: PHP
License: MIT
Last Refreshed: 2024-11-17 03:01:03
Package Statistics
Total Downloads: 16
Monthly Downloads: 2
Daily Downloads: 0
Total Stars: 1
Total Watchers: 2
Total Forks: 0
Total Open Issues: 0

Class gateway from the laravel config

You can provide overriding of your classes via config file (a list of classes defined by config key - like custom Eloquent model). With this you can work with expected model but add a posibility to allow extending of your base classes.

In default tries to load classes from the classes.php config file.

Example

Example config (classes.php in config folder):

<?php

return [
	"user" => App\\Models\\User::class
];

Call static method on class

$userGate = ClassGate::gate("user");
$users = $userGate->all() // will call User::all()

or shortcut

// will call User::all()
$users = ClassGate::gate("user")->all();

Create instance

$userGate = ClassGate::gate("user");
$user = $userGate->newInstance();

or shortcut

$user = ClassGate::instance("user");
$user = $userGate->theClass();

Class string:

$userGate = ClassGate::gate("user");

or shortcut

$userClass = ClassGate::objectClass("user");

Settings

Own config path

You can provide your own file or "array" path to the config via ClassGate::setConfigPath("models.list") which will find classes in models file and list array entry.

Example config (models.php in config folder):

<?php

return [	
	"othersKeys" : "...",
	"list" => [
		"user" => App\\Models\\User::class
	]
];

Todo

  • Own provider with default config file (optional)
  • Gate that will convert method call to config key and will create the correct ClassGate instance
  • A command that will create file with docs of supported models (will support typehint on ClassGate static methods)

ClassGate proposal

  • ClassGate::user() that will call ClassGate::gate("user")