note 86206 modified in class.arrayobject by danbrown
| From: | danbrown@php.net | Date: | Wed, 08 Oct 2008 18:45:47 +0000 |
| Subject: | note 86206 modified in class.arrayobject by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-145187@lists.php.net to get a copy of this message | ||
My need was to create a java-like collection where I could store objects by their DB primary keys
while having the standard stack capabilities of adding, retrieving, and removing objects from
collection. ArrayObject didn't quite do what I need it to do so I extended it a little.
<?php
class GenericCollection extends ArrayObject{
private $data;
function __construct(){
$this->data = new ArrayObject();
}
function addObject($_id, $_object){
$_thisItem = new CollectionObject($_id, $_object);
$this->data->offSetSet($_id, $_thisItem);
}
function deleteObject($_id){
$this->data->offsetUnset($_id);
}
function getObject($_id){
$_thisObject = $this->data->offSetGet($_id);
return $_thisObject->getObject();
}
function printCollection() {
print_r($this->data);
}
}
class CollectionObject {
private $id;
private $object;
function __construct($_id, $_object){
$this->id = $_id;
$this->object = $_object;
}
function getObject(){
return $this->object;
}
function printObject() {
print_r($this);
}
}
?>
Call it like so:
<?php
$u1 = new User/Data/Object (); //whatever, just an object.
$myCollection = new GenericCollection();
$myCollection->addObject(1, $u1);
print_r($myCollection->getObject(1));
?>
Now you have a simple and functional collection framework. Add methods in for specific types of
sorting, we just didn't need anything other than primary key access. And you can add
introspection into the collection object if you need to track what kind of an object it is.
tony@tonyandcarol.com
--was--
My need was to create a java-like collection where I could store objects by their DB primary keys
while having the standard stack capabilities of adding, retrieving, and removing objects from
collection. ArrayObject didn't quite do what I need it to do so I extended it a little.
class GenericCollection extends ArrayObject{
private $data;
function __construct(){
$this->data = new ArrayObject();
}
function addObject($_id, $_object){
$_thisItem = new CollectionObject($_id, $_object);
$this->data->offSetSet($_id, $_thisItem);
}
function deleteObject($_id){
$this->data->offsetUnset($_id);
}
function getObject($_id){
$_thisObject = $this->data->offSetGet($_id);
return $_thisObject->getObject();
}
function printCollection() {
print_r($this->data);
}
}
class CollectionObject {
private $id;
private $object;
function __construct($_id, $_object){
$this->id = $_id;
$this->object = $_object;
}
function getObject(){
return $this->object;
}
function printObject() {
print_r($this);
}
}
Call it like so:
$u1 = new User/Data/Object (); //whatever, just an object.
$myCollection = new GenericCollection();
$myCollection->addObject(1, $u1);
print_r($myCollection->getObject(1));
Now you have a simple and functional collection framework. Add methods in for specific types of
sorting, we just didn't need anything other than primary key access. And you can add
introspection into the collection object if you need to track what kind of an object it is.
tony@tonyandcarol.com
http://php.net/manual/en/class.arrayobject.php