mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 01:57:13 +00:00
Merge pull request #1198 from jenga201/master
Allowing Methods to be set or unset in ModelHooks
This commit is contained in:
@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
|
|||||||
[Next release](https://github.com/barryvdh/laravel-ide-helper/compare/v2.9.3...master)
|
[Next release](https://github.com/barryvdh/laravel-ide-helper/compare/v2.9.3...master)
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Allowing Methods to be set or unset in ModelHooks [\#1198 / jenga201](https://github.com/barryvdh/laravel-ide-helper/pull/1198)\
|
||||||
|
Note: the visibility of `\Barryvdh\LaravelIdeHelper\Console\ModelsCommand::setMethod` has been changed to **public**!
|
||||||
|
|
||||||
2021-04-02, 2.9.3
|
2021-04-02, 2.9.3
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|||||||
@@ -301,6 +301,8 @@ class MyCustomHook implements ModelHookInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
$command->setProperty('custom', 'string', true, false, 'My custom property');
|
$command->setProperty('custom', 'string', true, false, 'My custom property');
|
||||||
|
$command->unsetMethod('method');
|
||||||
|
$command->setMethod('method', $command->getMethodType($model, '\Some\Class'), ['$param']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -749,7 +749,7 @@ class ModelsCommand extends Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function setMethod($name, $type = '', $arguments = [], $comment = '')
|
public function setMethod($name, $type = '', $arguments = [], $comment = '')
|
||||||
{
|
{
|
||||||
$methods = array_change_key_case($this->methods, CASE_LOWER);
|
$methods = array_change_key_case($this->methods, CASE_LOWER);
|
||||||
|
|
||||||
@@ -761,6 +761,18 @@ class ModelsCommand extends Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function unsetMethod($name)
|
||||||
|
{
|
||||||
|
unset($this->methods[strtolower($name)]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMethodType(Model $model, string $classType)
|
||||||
|
{
|
||||||
|
$modelName = $this->getClassNameInDestinationFile($model, get_class($model));
|
||||||
|
$builder = $this->getClassNameInDestinationFile($model, $classType);
|
||||||
|
return $builder . '|' . $modelName;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $class
|
* @param string $class
|
||||||
* @return string
|
* @return string
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Hooks;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Contracts\ModelHookInterface;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class CustomMethod implements ModelHookInterface
|
||||||
|
{
|
||||||
|
public function run(ModelsCommand $command, Model $model): void
|
||||||
|
{
|
||||||
|
$command->setMethod('custom', $command->getMethodType($model, Builder::class), ['$custom']);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Hooks;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Contracts\ModelHookInterface;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class UnsetMethod implements ModelHookInterface
|
||||||
|
{
|
||||||
|
public function run(ModelsCommand $command, Model $model): void
|
||||||
|
{
|
||||||
|
$command->unsetMethod('query');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,7 +6,9 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks;
|
|||||||
|
|
||||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Hooks\CustomMethod;
|
||||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Hooks\CustomProperty;
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Hooks\CustomProperty;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ModelHooks\Hooks\UnsetMethod;
|
||||||
use Illuminate\Filesystem\Filesystem;
|
use Illuminate\Filesystem\Filesystem;
|
||||||
use Mockery;
|
use Mockery;
|
||||||
|
|
||||||
@@ -24,6 +26,8 @@ class Test extends AbstractModelsCommand
|
|||||||
],
|
],
|
||||||
'model_hooks' => [
|
'model_hooks' => [
|
||||||
CustomProperty::class,
|
CustomProperty::class,
|
||||||
|
CustomMethod::class,
|
||||||
|
UnsetMethod::class,
|
||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@@ -71,9 +75,9 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
*
|
*
|
||||||
* @property int $id
|
* @property int $id
|
||||||
* @property-read string $custom
|
* @property-read string $custom
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|Simple custom($custom)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder|Simple newModelQuery()
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder|Simple newQuery()
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|Simple query()
|
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
|
* @method static \Illuminate\Database\Eloquent\Builder|Simple whereId($value)
|
||||||
* @mixin \Eloquent
|
* @mixin \Eloquent
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user