Extension provide very simply use services for models and controllers
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist matthew-p/yii2-services "*"
or add
"matthew-p/yii2-services": "*"
to the require section of your composer.json
file.
Once the extension is installed, simply use it in your code by:
Create service for model (must implement IService or extend any of services in MP\Services):
use MP\Services\BaseModelService;
/**
* ...
*
* @property SampleModel $model
*/
class MyCustomService extends BaseModelService
{
/**
* My simple method
*
* @return array
*/
public function getSampleMethod(): array
{
return [];
}
}
Create model:
...
use MP\Services\ImplementServices;
/**
* Use services in model
* ...
*
* Services
* @property MyCustomService $customService
*/
class SampleModel extends ActiveRecord
{
use ImplementServices;
/**
* @inheritdoc
*/
public static function services(): array
{
return [
'customService' => MyCustomService::class,
];
}
...
}
And use:
$model = new SampleModel();
$model->customService->getSampleMethod();
For controllers, everything is the same, only the service is inherited from BaseControllerService
Run tests with command:
./vendor/bin/phpunit