I think that it is good idea to write page on RFC wiki with detailed descriptions, examples and motivations. I see that it can't be accepted in nearest future, but let it be for history. :)
There is many open questions. I will try to resolve that I can. >>> Bring a little Javascript into PHP? >> In fact, I looked at Kotlin :) > Kotlin does not modify classes. > This sort of thing is sound in compiled languages like Kotlin and C#, where > this is really syntactic sugar for calling user-defined functions with > object-like syntax - it's possible (and sound) *only* because these > languages can resolve such calls at compile-time. Yes, I understand it. At the beginning I'm trying to find way for Kotlin style realization - function with receiver. But, unfortunately, it seems almost impossible if keep it simple. > where this is really syntactic sugar Exactly. I'm positioning this as syntactic sugar. And very useful sugar I hope. > In dynamic languages like JavaScript, you're literally writing to a > map of methods, which means execution order is critical, and overwrites are possible Need some advice. Why execution order is critical? Inserting into `ce->functions_list` maked at compile time, and overwtites will be checked at this time too. > What's wrong with just calling a function and passing the object as argument? Nothing but aesthetic sense. For example, PDO. Classic way: $stmt = $db->prepare($sql); $stmt->execute(); $oneValue = $stmt->fetch(PDO::FETCH_NUMERIC)[0]??$default; Standart function way function takeOne($db, $sql, $default){ //see "classic way" return $value; } $oneValue = takeOne($db, $sql, $default); This is looks not good for me. - 3 arguments - no intuitive connection to $db - "takeOne" placed in global functions scope for simple utility logic. Proxy class method. Let me do not write monstrous wrapper over PDO? Extension function style function PDO->takeOne($sql, $default){ //see "classic way" return $value; } $oneValue = $db->takeOne($sql, $default); - Intuitive connection to $db. - "takeOne" encapsulated inside PDO class