Hello everyone. I created the Draft for this RFC: https://wiki.php.net/rfc/local_variable_types I'd love to hear your thoughts on this before proceeding further. If anything should be changed or updated just let me know. I'll be happy to help with anything related to this.
*---* *Best Regards,* *Wendell Adriel.* *Software Engineer **| Investor | Amateur Photographer | Musician | INFP* *https://wendelladriel.com <https://wendelladriel.com>* Em qua., 8 de fev. de 2023 às 15:54, Alexandru Pătrănescu < dreal...@gmail.com> escreveu: > On Tue, Feb 7, 2023 at 10:21 PM Mark Baker <m...@demon-angel.eu> wrote: > > > On 07/02/2023 20:53, Olle Härstedt wrote: > > > No not really. I'd expect it behave similar to function argument > > > type-hinting in PHP, that is, runtime checks, but where the notation > > > can be used by external tools. > > > > The big difference is that the current checking for function arguments > > is only necessary when a function is called; but that checking for > > local-scoped variables would be required on every assignment to a > > variable, or operation that can change a variable value; and that > > becomes more problematic with the potential need for union types. > > > > > Hi Mark, > > I saw that you and Olle were discussing that type checking should be > similar with functions typed parameters . > But in reality, it should be implemented more like typed properties. > > Actually that's already possible with something like > https://3v4l.org/T6GFS > function &declare_int(int $value) { > static $references = []; > > $valueWrapper = new class(5) { > public function __construct(public int $value) { > } > }; > $references[] = $valueWrapper; > > return $valueWrapper->value; > } > > $intVariable = &declare_int(0); > > $intVariable = 42; // works > $intVariable = 'test'; // fails > > > Even the PHP_INT_MAX works (it fails). > > To give credit, I saw it discussed few years ago on twitter and here you > can see a nice playground implementation: https://github.com/azjezz/typed/ > I don't see a bug technical performance downside, other than the wrapper > class references that you need to have a management for. > I think an implementation in C would be not less performant than how > properties types are checked. > > Regards, > Alex >