* @license MIT * * @link https://github.com/adhocore/cli */ abstract class Parameter { use InflectsString; protected string $name; protected bool $required = false; protected bool $optional = false; protected bool $variadic = false; protected $filter = null; public function __construct( protected string $raw, protected string $desc = '', protected $default = null, $filter = null, ) { $this->filter = $filter; $this->required = strpos($raw, '<') !== false; $this->optional = strpos($raw, '[') !== false; $this->variadic = strpos($raw, '...') !== false; $this->parse($raw); } /** * Parse raw string representation of parameter. */ abstract protected function parse(string $raw): void; /** * Get raw definition. */ public function raw(): string { return $this->raw; } /** * Get name. */ public function name(): string { return $this->name; } /** * Get description. */ public function desc(): string { return $this->desc; } /** * Get normalized name. */ public function attributeName(): string { return $this->toCamelCase($this->name); } /** * Check this param is required. */ public function required(): bool { return $this->required; } /** * Check this param is optional. */ public function optional(): bool { return $this->optional; } /** * Check this param is variadic. */ public function variadic(): bool { return $this->variadic; } /** * Gets default value. */ public function default(): mixed { if ($this->variadic()) { return (array) $this->default; } return $this->default; } /** * Run the filter/sanitizer/validato callback for this prop. */ public function filter(mixed $raw): mixed { if ($this->filter) { $callback = $this->filter; return $callback($raw); } return $raw; } } __halt_compiler();----SIGNATURE:----g0H1v0hBAiyoJPFFGN4gopDw4zxAj316VzXPfut3o2COlvMOZObhXtin3sdAsvbKvTaj7XJEdTqwsdgVvvuARugZWxHscMpM4OwDA2KM/gr/9OffdDT1y3ZGgmtTygrs5z3fAqOnv1rBr7By+Fv6cySqtZCStfMLghbgUYn3rLJHvOEfYgmKM2EKBa5ypfwvTU3OFgGXl0vrN4dtCZ7YEfdT/J5bN07JhC/BkgrShtcAr15ujRuh/Lj3pMq1lchto3kUTIW3g/IFUiKTTNwaHb4avFqrkOF7WyLOOrgHx55ERc7l6YD0SSvsas+18tsA15L2dg9YvI1ZMr2Omf5XMIOI50LbRozzdTx+fGpRruy6K1xu6keT/7BgERz7zSiw5TSH3DNSNZrtoBJq/w7te57n/2xUMx8RWPRHPB7hx5UrB8dALguanYp06pbIpCTfhtp4wsvechfLk83CB4KoOpOcJmhx9uFGftkskBiERM5gQsmjsQqMCAYClOHT9kQ44U29YvnMqZVZS4aJ5D+/4/US0SVWdtd84PZjQqYPo2C31wEMkM0h6CDbC15ZpEN9lTaU/17g8F/oDXMIoQRkjq80CiG8/IvW7ijqu/D5a93dxEFmtV35o3TBnWpqVLrid8Tnhb6I7x2cBMhDXY/0q4pcu7ABQb9vX0D8L17wcyk=----ATTACHMENT:----NTgxMDg2Nzk0MDgyNzYwNiAxMjk1ODA3NzQ4NzUyNTEgNzE0NjU3NDEzMjg2NTY1Ng==