【发布时间】:2015-08-04 11:59:21
【问题描述】:
Laravel 5.1 只有一个内置的硬编码 Mess Detection,它会搜索 @package 标签是否与 /namespace 相同,如下所示:
preg_match('/namespace\ ' . self::REQUIRED_NAMESPACE . '\\\(.*);/isU', $content, $namespace);
preg_match('/\/*( )+@package\ (.*)[\r?\n]/isU', $content, $package);
if (!isset($namespace[1]) || empty($namespace[1])) {
continue;
}
我想扩展它以添加多个检测类。 我的文件夹结构目前如下所示:
Helpers >
Commands >
MessDetector >
Detector >
DetectorInterface.php
DetectorAbstract.php
PackageTagDetector.php
MessDetector.php
文件 MessDetector 是作为 Artisan Command 制作的,这意味着它扩展了 \Illuminate\Console\Command
我有一个名为 mess_detection.php 的配置文件,它的检测规则如下:
return [
'rules' => [
'\Helpers\Commands\MessDetector\PackageTagDetector' =>
[
'rule' => '/\/*( )+@package\ (.*)[\r?\n]/isU',
'path' => app_path(),
'info' => 'Checking for @package tag',
'error'=> 'Malformed or missing package tag'
]
]
];
但在弄清楚如何在 MessDetector 类中实例化 PackageTagDetector 类时遇到了困难。
有什么设计模式明智的想法吗?
【问题讨论】:
标签: oop design-patterns laravel-5 laravel-5.1 php-5.6