Exemplo n.º 1
0
 function is_association_property($name)
 {
     return AdoDBRecord_Tools::is_belongs_to_property($name) || AdoDBRecord_Tools::is_has_many_property($name) || AdoDBRecord_Tools::is_has_one_property($name);
 }
Exemplo n.º 2
0
 function parse_member()
 {
     $args = func_get_args();
     switch (count($args)) {
         case 1:
             # this call was made by __get()
             list($property) = $args;
             if (AdoDBRecord_Tools::is_column_property($property)) {
                 return $this->_attributes[$property];
             }
             if ($property == "id") {
                 return $this->_attributes[$this->_primary_key];
             }
             # if no column property check for association or proxy
             # TODO cache proxy
             $use_proxy = substr($property, -1) == "_";
             if ($use_proxy) {
                 $property = substr($property, 0, -1);
             }
             if (AdoDBRecord_Tools::is_association_property($property)) {
                 if (AdoDBRecord_Tools::is_has_many_property($property)) {
                     $returns_many = true;
                     $options = $this->_has_many[$property];
                 } elseif (AdoDBRecord_Tools::is_belongs_to_property($property)) {
                     $returns_many = false;
                     $options = $this->_belongs_to[$property];
                 } elseif (AdoDBRecord_Tools::is_has_one_property($property)) {
                     $returns_many = false;
                     $options = $this->_has_one[$property];
                 } else {
                     die("AdoDBRecord_Base::parse_member(): fatal association inconsistency");
                 }
                 $proxy = new AdoDBRecord_AssociationProxy($this, $returns_many, $options);
                 if ($use_proxy) {
                     return $proxy;
                 }
                 return $proxy->find();
             }
             # TODO write a real error handler
             die(get_class($this) . "->{$property}: No such property");
         case 2:
             # this call was made by __set()
             # TODO check property is valid (_associations)
             list($property, $value) = $args;
             if (AdoDBRecord_Tools::is_column_property($property)) {
                 return $this->set_attributes(array($property => $value));
             }
             if ($property == "id") {
                 return $this->set_attributes(array($this->_primary_key => $value));
             }
             # TODO write a real error handler
             die(get_class($this) . "->{$property}: No such property");
         default:
             # this call was made by some chaotic wizard and is invalid
             # TODO write a real error handler
             die("AdoDBRecord_Base::parse_member(): unexpected arguments received");
     }
 }