Hello Jochem,

Tuesday, April 25, 2006, 3:15:52 PM, you wrote:

> Petar Nedyalkov wrote:
>> On Tuesday 25 April 2006 14:30, Edin Kadribasic wrote:
>> 
>>>Hi,
>>>
>>>I was wondering if someone could enlighten me why it is not possible to
>>>create on-the-fly static properties:
>>>
>>>php -r 'class foo{}; foo::$bar = 1;'
>>>Fatal error: Access to undeclared static property:  foo::$bar in Command
>>>line code on line 1
>> 
>> 
>> This totally breaks the capsulation in the OO paradigm, so I find it the 
>> right 
>> behaviour. Taking apart the fact that there's no compilation in PHP, it also 
>> prevents capsulation and making a member variable of an object available 
>> only 
>> after it's declaration in the class (except for stdClass) is correct for me. 
>> I see this as "You can't redefine the model at runtime".

> Rubys allows exactly that and I'm sure your not going to say that Ruby is not 
> an OO
> language - Javascript likewise, in that it allows runtime 
> definition/extension of
> the model (granted it's prototype based rather than class based).

Do not mix class based OO like PHP and prototype based OO like JavaScript.

> (anyone with the argument that PHP!=Ruby or PHP!=Javascript might consider 
> that
> PHP!="the OO paradigm")

PHP simply supports its own set and view of OO.

> I don't think the Fatal Error mentioned above is, from a endusers' POV,
> what would be expected given the ability to define non-static properties on 
> the fly...
> If I had to guess as to what kind of error was raised I would have put my 
> money on
> E_STRICT - i.e. 'we don't recommend this way of doing things, but it doesn't 
> hurt the
> engine per se'

> having said that I have never needed to define static properties on the fly, 
> so it's
> all rather academic. :-)

>> 
>> 
>>>Was this not possible because of the engine implementation of the static
>>>properties?
>>>

It is just some decision that was taken that the newer OO stuff should be a
bit more strict.

Best regards,
 Marcus

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to