["d1", "help" => "dynamic command 1", "cmd_args" => [ ["-o", "--d1-option"], ["-v:", "--d1-value"], ], ], "dyn2" => ["d2", "help" => "dynamic command 2", "cmd_args" => [ ["-o", "--d2-option"], ["-v:", "--d2-value"], ], ], ]; } Application::run(new class extends Application { const ARGS = [ #"dynamic_command" => [self::class, "get_dynamic_command"], "dynamic_command" => Test3DynamicCommand::class, ["-o", "--option"], ["-v:", "--value"], ["static", "s", "help" => "static command", "cmd_args" => [ ["-o", "--s-option"], ["-v:", "--s-value"], ], ], ]; static function get_dynamic_command(string $command): ?array { switch ($command) { case "d1": return Test3DynamicCommand::COMMANDS["d1"]; case "d2": return Test3DynamicCommand::COMMANDS["d2"]; default: return null; } } private $option, $value, $args, $command; function main() { Txx("option", $this->option, "value", $this->value); Txx("args", $this->args); Txx("command", $this->command); } });