Hi, Rowan,
---- En dom, 12 jul 2020 14:19:08 +0200 Rowan Tommins
<rowan.coll...@gmail.com> escribió ----
> The problem with this, whether built in or not, is that you have to express
> everything with strings rather than keywords. That means, for instance, that
> invalid values in the definitions themselves will only error at run-time.
> The definitions also tend to get verbose pretty quickly.
>
> To make it concise and checked at compile-time, you need it to be a
> construct that pairs identifiers to types without first representing them as
> strings, e.g. to write `?string $foo = 'hello'` rather than `'foo' =>
> ['type'=>'string', 'nullable'=>true, 'default'=>'hello']`. It turns out we
> already have a construct for doing that: function signatures.
>
> If the input is an actual array or object coming from "outside", you're
> probably going to want a more extensible validation system anyway. Those are
> really hard to design, and probably best left to userland where people can
> choose the tradeoffs they prefer.
>
> Regards,
>
I see.
However, with named arguments you also have to implement changes in parser in
order to can recognize named arguments. You also have to change behavior about
default parameters. I don't know if this change affect to performance, maybe
do.
By the other hand, editor like PHPStorm has "Inlay Hints":
https://www.jetbrains.com/help/rider/Inline_Parameter_Name_Hints.html
With a function which checks scheme, you also could use in other contexts, like
forms:
```
$scheme = ['name' => 'string', 'surname' => 'string', '?age' => 'int');
$is_valid = array_check_scheme( $_POST, $scheme );
```
You can use it even with JSON:
```
$request = json_decode( $request_json, true );
$scheme = ['name' => 'string', 'surname' => 'string', '?age' => 'int');
$is_valid = array_check_scheme( $request, $scheme );
```
> e.g. to write `?string $foo = 'hello'` rather than `'foo' =>
> ['type'=>'string', 'nullable'=>true, 'default'=>'hello']`
Maybe you don't need checked at compile-time. is it slow?, securely, but you
don't use in everywhere.
> you're probably going to want a more extensible validation system anyway.
Maybe, in that case, userland libraries have a starting point. With XML parsing
is the same. PHP provides basic functionality
and userland provide advanced.
Regards
--
Manuel Canga
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php