public function &__get($key)
{
if (array_key_exists($key, $this->data)) {
$this->access($key);
return $this->data[$key];
}
$column = $this->table->connection->databaseReflection->getReferencedColumn($key, $this->table->name);
if (array_key_exists($column, $this->data)) {
$value = $this->data[$column];
$referenced = $this->table->getReferencedTable($key);
$ret = isset($referenced[$value]) ? $referenced[$value] : NULL;
// referenced row may not exist
return $ret;
}
$this->access($key);
if (array_key_exists($key, $this->data)) {
return $this->data[$key];
} else {
$this->access($key, TRUE);
$this->access($column);
if (array_key_exists($column, $this->data)) {
$value = $this->data[$column];
$referenced = $this->table->getReferencedTable($key);
$ret = isset($referenced[$value]) ? $referenced[$value] : NULL;
// referenced row may not exist
} else {
$this->access($column, TRUE);
trigger_error("Unknown column {$key}", E_USER_WARNING);
$ret = NULL;
}
return $ret;
}
}