1 | <?php |
||
31 | class ModulePublishCommand extends Command |
||
32 | { |
||
33 | /** @var string */ |
||
34 | protected $name = 'ytake:aspect-module-publish'; |
||
35 | |||
36 | /** @var string */ |
||
37 | protected $description = 'Publish any aspect modules from ytake/laravel-aspect'; |
||
38 | |||
39 | /** @var Filesystem */ |
||
40 | protected $filesystem; |
||
41 | |||
42 | /** @var string */ |
||
43 | protected $classPath = 'Modules'; |
||
44 | |||
45 | /** @var array package modules */ |
||
46 | protected $modules = [ |
||
47 | 'CacheableModule' => 'Ytake\LaravelAspect\Modules\CacheableModule', |
||
48 | 'CacheEvictModule' => 'Ytake\LaravelAspect\Modules\CacheEvictModule', |
||
49 | 'CachePutModule' => 'Ytake\LaravelAspect\Modules\CachePutModule', |
||
50 | 'TransactionalModule' => 'Ytake\LaravelAspect\Modules\TransactionalModule', |
||
51 | 'LoggableModule' => 'Ytake\LaravelAspect\Modules\LoggableModule', |
||
52 | 'LogExceptionsModule' => 'Ytake\LaravelAspect\Modules\LogExceptionsModule', |
||
53 | 'PostConstructModule' => 'Ytake\LaravelAspect\Modules\PostConstructModule', |
||
54 | 'RetryOnFailureModule' => 'Ytake\LaravelAspect\Modules\RetryOnFailureModule', |
||
55 | 'MessageDrivenModule' => 'Ytake\LaravelAspect\Modules\MessageDrivenModule', |
||
56 | 'QueryLogModule' => 'Ytake\LaravelAspect\Modules\QueryLogModule', |
||
57 | ]; |
||
58 | |||
59 | /** |
||
60 | * @param Filesystem $filesystem |
||
61 | */ |
||
62 | public function __construct(Filesystem $filesystem) |
||
67 | |||
68 | /** |
||
69 | * @return void |
||
70 | */ |
||
71 | public function handle() |
||
72 | { |
||
73 | foreach ($this->modules as $className => $module) { |
||
74 | $path = $this->getPath($this->parseClassName($className, $this->argument('module_dir'))); |
||
75 | |||
76 | if ($this->filesystem->exists($path)) { |
||
77 | continue; |
||
78 | } |
||
79 | $stub = $this->filesystem->get($this->stub()); |
||
80 | $extendClassName = $this->getExtendsClassName($module); |
||
81 | $source = str_replace( |
||
82 | [ |
||
83 | 'DummyNamespace', |
||
84 | 'DummyClass', |
||
85 | 'DummyAspectModuleClass', |
||
86 | 'DummyModuleClass', |
||
87 | ], |
||
88 | [ |
||
89 | $this->laravel->getNamespace() . $this->argument('module_dir'), |
||
|
|||
90 | $className, |
||
91 | $module . ' as ' . $extendClassName, |
||
92 | $extendClassName, |
||
93 | ], $stub); |
||
94 | $this->makeDirectory($path); |
||
95 | $this->filesystem->put($path, $source); |
||
96 | $this->info($path . ' created successfully.'); |
||
97 | } |
||
98 | } |
||
99 | |||
100 | /** |
||
101 | * @return array |
||
102 | */ |
||
103 | protected function getArguments() |
||
109 | |||
110 | /** |
||
111 | * @param string $name |
||
112 | * |
||
113 | * @return string |
||
114 | */ |
||
115 | protected function getPath($name) |
||
121 | |||
122 | /** |
||
123 | * Parse the name and format according to the root namespace. |
||
124 | * |
||
125 | * @param string $name |
||
126 | * |
||
127 | * @return string |
||
128 | */ |
||
129 | protected function parseClassName($name, $moduleDirectory = null) |
||
145 | |||
146 | /** |
||
147 | * added custom aspect module, override package modules |
||
148 | * |
||
149 | * @param $module |
||
150 | * |
||
151 | * @return $this |
||
152 | */ |
||
153 | protected function addModule($module) |
||
159 | |||
160 | /** |
||
161 | * Build the directory for the class if necessary. |
||
162 | * |
||
163 | * @param string $path |
||
164 | * |
||
165 | * @return string |
||
166 | */ |
||
167 | protected function makeDirectory($path) |
||
173 | |||
174 | /** |
||
175 | * @param $module |
||
176 | * |
||
177 | * @return string |
||
178 | */ |
||
179 | protected function getExtendsClassName($module) |
||
186 | |||
187 | /** |
||
188 | * @return string |
||
189 | */ |
||
190 | protected function stub() |
||
195 | } |
||
196 |
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.
This is most likely a typographical error or the method has been renamed.