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