Why would something like this not work? strict class MyClass { protected int $foo = 1; public string $bar = "strict keyword in front of class allows/enforces strict properties"; private string $isItReallyThatDifficult = "to implement this?"; }
On Tue, Jun 5, 2018 at 4:17 PM, Rowan Collins <rowan.coll...@gmail.com> wrote: > On 05/06/2018 08:22, Rudolph Gottesheim wrote: > >> There's always a lot of talk about types in the PHP community. >> Specifically, many developers want property types, generics, function >> signature types, union and intersection types, and more. Those talks (and >> RFCs) always end with the same result: "We can't do it because performance >> issues." >> >> Has there ever been a discussion about adding some of those features >> syntactically, but ignoring them during runtime? At least until someone >> finds a performant way to check them at runtime. That way we could have >> advanced type checking in our editors at least. >> > > > Hi, > > I believe this is part of the original aim of Hack-Lang: the additional > type features of that language are not part of the run-time, but checked by > a static analysis tool offline. A number of languages have similar setups - > Python and Dart both have the types as offline and/or development-mode-only > features. Indeed, PHP seems to have gone a very unusual route in having a > dynamic language with type constraints which are effectively always-on > assertions. > > One of the problems with moving PHP to this offline-checking model is that > people will expect new type constraints to work like existing ones, so may > be caught out by them not being checked at run-time. Worse, static checks > may not be able to detect certain violations; I don't know much about > Hack's model, but I understand it includes both different levels of > strictness, and restrictions on dynamic language features - things like > references, "variable variables", and non-object callables. > > I do think it's an interesting question to think about though. > > Regards, > > -- > Rowan Collins > [IMSoP] > > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >