From fb642b76bb3d84b38c09f5d9dff8b51369eedaf2 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sun, 29 May 2016 20:33:48 -0400 Subject: Make console commands pluggable --- doc/plugin-registration.markdown | 41 +++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) (limited to 'doc/plugin-registration.markdown') diff --git a/doc/plugin-registration.markdown b/doc/plugin-registration.markdown index 4b6e85c0..37540f29 100644 --- a/doc/plugin-registration.markdown +++ b/doc/plugin-registration.markdown @@ -110,8 +110,8 @@ public function getClasses() { return array( 'Plugin\Budget\Model' => array( - 'HourlyRate', - 'Budget', + 'HourlyRateModel', + 'BudgetModel', ) ); } @@ -120,11 +120,42 @@ public function getClasses() Now, if you use a class that extends from `Core\Base`, you can access directly to those class instance: ```php -$this->hourlyRate->remove(123); -$this->budget->getDailyBudgetBreakdown(456); +$this->hourlyRateModel->remove(123); +$this->budgetModel->getDailyBudgetBreakdown(456); // It's the same thing as using the container: -$this->container['hourlyRate']->getAll(); +$this->container['hourlyRateModel']->getAll(); ``` Keys of the containers are unique across the application. If you override an existing class, you will change the default behavior. + +Add new API methods +------------------- + +Kanboard use this library [JSON-RPC](https://github.com/fguillot/JsonRPC) to handle API calls. + +To add a new method you can do something like that from your plugin: + +```php +$this->api->getProcedureHandler()->withCallback('my_method', function() { + return 'foobar'; +}); +``` + +`$this->container['api']` or `$this->api` expose an instance of the object `JsonRPC\Server`. + +Read the library documentation for more information. + +Add new console commands +------------------------ + +Kanboard use the library [Symfony Console](http://symfony.com/doc/current/components/console/introduction.html) to handle local command lines. + +Kanboard expose an instance of the object `Symfony\Component\Console\Application` via `$this->cli`. +You can add new commands from your plugin: + +```php +$this->cli->add(new MyCommand()); +``` + +Read the library documentation for more information. -- cgit v1.2.3