> We should decide and implement whatever is decided on by beta2.
> 
great.

> > > So how do we get a formal spec for the changes (starting with nicer names,
> > > i.e. Iterator instead of spl_foreach)? :) It's probably best if you take
> > > Sterling's email and try and come to a final set of interfaces and a very
> > > very short explanation where relevant of what it'll do and then we can
> > > aye/nay each part.
> > >
> >
> >What's wrong with my interfaces? ;-D
> 
> Ugly names? :) I'm not very sure about bringing things like cast 
> overloading into the language space but we can argue about that if/when we 
> have the final list. If you say what you did is final we can start with that.
> 

Ugly names - I'm wounded. ;-)

Anyhow, I've repasted them here for your criticism ;-)

// Base overload interface, to allow for checks on whether or not a 
// object is overloaded
interface Overloaded { };

// Overloaded_Value overloads the object itself, allowing you to treat 
// the object as a base type
interface Overloaded_Value implements Overloaded {
    // Called when the object is directly assigned to
    // @return null
    function setValue($value);

    // Called when the object is cast to type a certain type
    // or kind-of type
    // valid types are ::
    //     'boolean'
    //     'integer'
    //     'double'
    //     'number'
    //     'string'
    //     'array'
    // @return value A value of type $type
    function asType($type);
};

// Overloaded_Iterator allows you to overload an object, to allow
// foreach () to move over the object
interface Overloaded_Iterator implements Overloaded {
    // Move forward one element in the object
    // @return null
    function next();
    // Get the value of the current object
    // @return zval (a PHP value)
    function current();
    // Tells whether or not the object has more data
    // @return bool
    function hasMore();
};

// Overloaded properties allows you to overload both property
// *and* array accesses.
interface Overloaded_Properties implements Overloaded {
    // Get $property
    // @return zval (a PHP value)
    function get($property);
    // Set $property
    // @return nothing
    function set($property, $value);
    // Check whether or not $property exists
    // @return bool
    function exists($property);
}

// Allow you to overload method calls
interface Overloaded_Methods implements Overloaded {
    // Catch a method call, $name is the name of the method
    // @return zval (a PHP value) 
    function call($name);
};


-Sterling





> Andi
-- 
"Programming today is a race between software engineers stirring to  
 build bigger and better idiot-proof programs, and the universe trying  
 to produce bigger and better idiots. So far, the universe is winning." 
    - Unknown

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

Reply via email to