Hello Christian,

Saturday, November 20, 2004, 2:59:07 PM, you wrote:

> Marcus Boerger wrote:
>> We already decided not to allow ArrayAccess implementations to work

> Ok, excuse my ignorance, so what's the list of functions/constructs 
> affected by SPL?

> - foreach
> - []
> - count()

> What else? Are there plan to extend that at a later stage? [ Simply 
> point me to an online document if it exists, I missed it so far. ]

There is non because noone so far wrote something about the negine magic.
Mabe you should look here at the engine description in Zend directory of
you PHP source.

In detail:
- foreach is overloaded by the interfaces Traversable, Iterator,
  IteratorAggregate (all three engine level).
- [] is overloaded by interface ArrayAccess (this is engine level only
  count() is missing here)
- count() is overloaded by SPL interface Countable.

Othere real magic features are:
- __ get(), __set(), __call() which a only controlled by a provided
  implementation and handled by the engine
- __serialize(), __unserialize() controlled by a provided implementation
  and handled by ext/standard

So obviously there is a clear desticntion in the naming:
- __*() function are only controlled by a given implementation through the
  engine
- Other things (non __*() function) are controlled by an Interface

The reason for this might be BC and that we didn't had Interfaces when
__get/__set/__call were implemented. To make it real we should chnage
the interceptors to be controlled by interfaces too. But in the other
hand thereis no real enforcement needed.

Coming back to SPL this means - as said already - that it only utilizes
the engine features. But as always there is an exception and this exception
is Countable / count().


>> ArrayAccess usable. However apart from coun()/Countable in general SPL
>> only makes engine features usefull. Since count()/sizeof() is a lnagugae

> I'm not sure what you are trying to say here. I'm not against SPL.

>> or even compiler feature in ost other languages it should result in it
>> being moved to the engine in PHP.

> No idea what you mean here. But that's probably not important as I'm 
> sure you and Andi are doing the Right Thing(tm).

In other words i meant that the Countable interface should be moved to the
engine.

Best regards,
 Marcus                            mailto:[EMAIL PROTECTED]

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

Reply via email to