What about a magic interface instead of a new base class, in a similar
vein to the existing Array Access and Serializable interfaces.
NonDynamic perhaps?

On Mon, May 21, 2012 at 5:09 PM, Tom Boutell <t...@punkave.com> wrote:
> Rasmus, isn't your concern about the impact of dynamic property
> support on developers who don't actually use it a nonissue in 5.4,
> where properties that aren't dynamic are stored as a flat array?
>
> On Mon, May 21, 2012 at 4:52 PM, Rasmus Schultz <ras...@mindplay.dk> wrote:
>> Adding/removing properties at runtime is great if you want obscure,
>> unmaintainable code and don't think an IDE is useful.
>>
>> So to make my previous statement more precise, dynamic properties are
>> not widely used in respectable modern codebases, and is generally
>> something a reputable developer would frown upon. Yes, some codebases
>> (e.g. Drupal) rely on this extensively, but modern frameworks
>> generally do not - in fact, they often take measures to ensure that
>> exceptions are thrown if you try to access a property that has not
>> been formally defined.
>>
>> For that matter, most ORMs (a typical example of where dynamic
>> properties would come in handy) don't rely on dynamic properties
>> either - they rely on __get() and __set() and store the actual values
>> in a single property, as an array. So even for highly dynamic
>> components in modern frameworks, this is not a feature that is often
>> used.
>>
>> Drupal-development aside, and perhaps some XOOPS-development back in
>> the dark ages, I can't actually recall when I've used dynamic
>> properties.
>>
>> I suddenly realize why certain heavily-used classes in the Yii
>> framework have obscure property-names like $_m and $_p ... they're
>> trying to save memory. Not really logical that you should have to
>> compromise legible code in favor of saving memory.
>>
>> Makes me wonder if this issue could be addressed, killing two birds
>> with one stone. Since the dynamic aspect is an inconvenience to many
>> developers, and since it causes memory-overhead whether they make use
>> of this feature or not, how about introducing a non-dynamic
>> alternative base-class that actually throws if you access properties
>> that have not been defined?
>>
>> This wouldn't change the way PHP objects work by default, but would
>> lighten the memory-overhead in a lot of modern frameworks, and
>> possibly speed up property-access too, since you can have a flat
>> look-up table for class-properties; and could eliminate the need for
>> an "object" or "component" base-class in frameworks...
>>
>>
>> On Mon, May 21, 2012 at 2:55 PM, Stas Malyshev <smalys...@sugarcrm.com> 
>> wrote:
>>> Hi!
>>>
>>>> How come it's necessary to store the property-names of every property
>>>> in every object? For properties that have been defined in classes, why
>>>> can't they be stored in a more efficient manner? (using lookup tables)
>>>
>>> No because you can add and remove properties freely at runtime.
>>>
>>>> I know the nature of PHP is dynamic, and I know that dynamic
>>>> properties would have to be stored in a key/value form internally...
>>>> but if you look at modern PHP software, dynamic properties is actually
>>>> something very few people use.
>>>
>>> This is not true.
>>
>> --
>> PHP Internals - PHP Runtime Development Mailing List
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>
>
>
> --
> Tom Boutell
> P'unk Avenue
> 215 755 1330
> punkave.com
> window.punkave.com
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>

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

Reply via email to