<?php
class AbstractPhoto {
  public $width = 260;
  public $height = 210;
  public $method = 'crop';
  public $type = 'unknown';
  public $image = 'nophoto.jpg';
  public function __construct($image) {
    $this->type = strtolower(get_class($this));
  }
}

class Photos extends AbstractPhoto {
  public function __construct($image) {
    parent::__construct($image);
    $this->image = $image;
  }
}

class Catalog extends AbstractPhoto {
}

class PseudoArray implements ArrayAccess  {
  private $classTable = array (false => 'Photos', true => 'Catalog');
  public function offsetGet ($offset) {
    $class = $this->classTable[strlen($offset)>0];
    return new $class($offset);
  }
  public function offsetExists ($offset) {return true;}
  public function offsetSet ($offset, $value) {}
  public function offsetUnset ($offset) {}
 }


$properties = new PseudoArray();

var_dump($properties['']);

var_dump($properties['ololo.jpg']);