Re: Static method call syntax on objects
| From: | Etienne Kneuss | Date: | Wed, 10 Aug 2011 22:24:01 +0000 |
| Subject: | Re: Static method call syntax on objects | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-54500@lists.php.net to get a copy of this message | ||
Hello,
On Wed, Aug 10, 2011 at 22:20, Stas Malyshev <smalyshev@sugarcrm.com> wrote:
> Hi!
>
> On 8/10/11 1:12 PM, Sebastian Bergmann wrote:
>>
>> Is this exepcted behaviour?
>>
>> ➜ ~ cat test.php
>> <?php
>> class Foo {
>> public static function bar() {
>> print __METHOD__ . "\n";
>> }
>> }
>>
>> $foo = new Foo;
>> $foo::bar();
>>
>>
>> ➜ ~ php test.php
>> Foo::bar
>>
>> I, for one, was surprised that this does what it does with PHP 5.3 and
>> PHP 5.4 (do not have older version of PHP hand).
>>
>
> This is how FETCH_CLASS works now - when it has an object in where it
> expects class name, it uses object's class. We could call toString() instead
> but that might be even more surprising.
Well, FETCH_CLASS has always worked like that, but previously (<5.3)
variables for class references were only allowed as part of the "new"
statement,
e.g. new $obj; The semantic remains the same, only that now variables
are also allowed for :: calls (since 5.3).
> --
> Stanislav Malyshev, Software Architect
> SugarCRM: http://www.sugarcrm.com/
> (408)454-6900 ext. 227
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
--
Etienne Kneuss
http://www.colder.ch