Hi Toby,

your question may be an additional use case for an
ezcPersistentObjectCollection class, which I've started just thursday.
My use case was, to get an array of a specific property of all
persistent objects in the collection. You could add a method to get an
array of the objects with the idProperty as keys.

<?php

class ezcPersistentObjectCollection
{
    /**
     * The class of the objects in this collection
     * 
     * @var string
     */
    private $class;

    /**
     * The objects of this collection, all of type $this->class
     * 
     * @var mixed
     */
    private $objects = array();

    /**
     * Persistent Session instance for the given objects.
     * 
     * @var ezcPersistentSession
     */
    private $pos;

    public function __construct( ezcPersistentSession $pos, Array $objects = 
array() )
    {
        $this->pos = $pos;

        if( !empty( $objects ) )
        {
            $class = $this->class = get_class( $objects[0] );

            foreach( $objects as $object )
            {
                if( !get_class( $object ) === $class )
                {
                    throw new Exception( 'Collection has been initialized for 
class '.$class.' but got object of class '.get_class( $object ) );
                }
                $this->objects[] = $object;
            }
        }
    }

    public function getPropertyValues( $property )
    {
        $values = array();

        foreach( $this->objects as $object )
        {
            $values[] = $object->$property;
        }
        return $values;
    }
}

Best regards,
-- 
Thomas Koch, http://www.koch.ro
YMC AG, http://www.ymc.ch

-- 
Components mailing list
Components@lists.ez.no
http://lists.ez.no/mailman/listinfo/components

Reply via email to