PHP 4.0 Bug #8796 Updated: "$foo->bar->baz" ambiguity in double quoted strings

From: Date: Tue, 20 Feb 2001 13:44:45 +0000
Subject: PHP 4.0 Bug #8796 Updated: "$foo->bar->baz" ambiguity in double quoted strings
Groups: php.dev 
Request: Send a blank email to php-dev+get-47060@lists.php.net to get a copy of this message
ID: 8796 User Update by: rick@eastcore.net Status: Analyzed Bug Type: Feature/Change Request Description: "$foo->bar->baz" ambiguity in double quoted strings Haven't checked out here-docs either. On the backwards compatibility issue, I can't see that there would be (much of) one. If people aren't using the $foo->bar->baz syntax within strings then they aren't affected. If people are using the syntax it's either not doing what they want/expect or they're plain weird :-) Incorporating such an enhancement and saying "$foo->bar->baz in {strings, here-docs} now does what you'd expect" isn't likely to cause many ripples (IMHO). Previous Comments: --------------------------------------------------------------------------- [2001-02-20 01:26:21] andre@php.net there is nothing ambigous (the way you described), except if enclosed by double quotes in strings, we should maintain backwards compatibility here, but maybe we shouldn't... :) I guess (not verified) this applies to here-docs too --------------------------------------------------------------------------- [2001-01-19 02:12:19] rick@eastcore.net In PHP4 it is possible to construct an object and refer to a member using the notation: $foo->bar where foo is the object and bar is the member. There has been some discussion in the php.net documentation area on OO about the inability to further extend this notation to do something like: print "$foo->bar->baz"; The reason given for not being able to do this is due to the ambiguity of the multiple -> operators. Yes, the -> operator could be ambiguous. The '+', '*', '%', ... operators could also be ambiguous. Each language which uses such binary operators disambiguates them by defining and associativity and precedence to these operators. Similarly, for languages which support similar semantics for an -> operator there is a disambiguating assignment of associativity and precedence which allows constructs like $foo->bar->baz to be unambiguously interpreted. I am requesting that the specification for PHP be broadened to include sufficient associativity and precedence constraints on -> to allow $foo->bar->baz to be disambiguated. I believe the most common disambiguation would have: $foo->bar->baz refer to "the value of the member 'baz' of the object denoted by the value of the member 'bar' of the object denoted by the value of the variable foo." Of course, I forget at the moment whether that's left- or right-associative, and the precedence should presumably be fine set at its current level. --------------------------------------------------------------------------- Full Bug description available at: http://bugs.php.net/?id=8796

« previous php.dev (#47060) next »