Hi Den fre. 6. sep. 2019 kl. 07.22 skrev Mike Schinkel <m...@newclarity.net>: > Thank you very much for your feedback. You illustrated perfectly why I > should not have produced that proposal in haste. > > Your confusion was due to my first draft errors, which thanks to your > feedback I have hopefully had a chance to correct. I effectively rewrote and > extended the proposal which you should be able to find at the same URL: > > https://gist.github.com/mikeschinkel/50aec7094f5643223d28674639f9f117 > <https://gist.github.com/mikeschinkel/50aec7094f5643223d28674639f9f117> > > I would be greatly appreciative if you could give is a second look. > > > > All in all I do not understand the benefits of this approach compared to > > Nikita’s RFC. > > I have moved the benefits to the beginning of the document and expanded the > list I elaborate on. > > Hopefully they will be clear now? > > > -Mike Schinkel
I read both versions of this and it strikes me more as a partical interface that is half baked by using keywords, that is not really in line with how the rest of PHP is designed. This sounds more like something that could be implemented on top of Nikita's RFC if it passes in userland, but anyway, here goes with my comments to this: -- New magical methods that appear out of nowhere without an interface, e.g. ::type(), ::value(), ::setValue(), ::toXZY(). if these magical methods suddenly appear with may be varadic based on the value of the `types` setting, this is inconsistent to the rest of PHP. -- There is no mention of what happens if there is multiple `types` in a definition. -- Why is the syntax using | as a separator where all other decls is using a comma separated list? -- Nitpick The "types" decl doesn't use an ending semicolon in any of your examples -- Nitpick: Your examples in the "Accepting params into a union instance" section uses $this in a procedural function -- In the "Named Union equivalence to anonymous union" section I fail to see how Building2 can magically accept Building, this is based on properties and there is there is no mention of the ability to have (or not to have) multiple named unions as property types. -- Is this designed to be only meant for mutability (You are publically exposing setValue())? -- What happens if the class is extended? -- Why is it desired to implement a namespaced class instance return? If you are working on the object, you should already have access to this information it provides, no? -- Why is ::types() apart of the union instead of leaving that to reflection? No other part of PHP exposes such as a method over procedural functions (like get_object_vars()). (Bear in mind I wrote this as the first in the morning) -- regards, Kalle Sommer Nielsen ka...@php.net -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php