Пример #1
10
 public function __get($var)
 {
     $model = unCamelize($var);
     if (file_exists(INST_PATH . 'app/models/' . $model . '.php')) {
         if (!class_exists($var)) {
             require INST_PATH . 'app/models/' . $model . '.php';
         }
         $obj = new $var();
         return $obj;
     }
 }
Пример #2
4
 /**
  *
  * Get or set the name of the table.
  * @param string $name
  */
 public function _TableName($name = null)
 {
     if (!empty($name)) {
         $this->_ObjTable = $name;
     } elseif (empty($this->_ObjTable) or strlen($this->_ObjTable) < 1) {
         $className = unCamelize(get_class($this));
         $words = explode("_", $className);
         $i = sizeof($words) - 1;
         $words[$i] = Plurals($words[$i]);
         $this->_ObjTable = implode("_", $words);
     }
     return $this->_ObjTable;
 }
Пример #3
0
 /**
  * método mágico __call()
  * 
  * Este método es ejecutado por PHP cuando se accede a un m?todo que no existe.
  * A través de este método mágico se realiza el mapeo relacional, asumiendo que el llamado
  * a un método, es el llamado a un modelo realiza la subconsulta según las condiciones de relación y devuelve el 
  * objeto del modelo requerido.
  * Es imperativo que las variables {@link $has_many}, {@link $belongs_to}, {@link $has_one}, {@link $has_and_belongs_to}, 
  * estén correctamente creadas con las tablas a las que tienen su relación.
  * Tambien define el comportamiento cuando se hace un llamado a un método no definido en la clase, invocando a la función 
  * definida en las extensiones.
  * Incluso define el comportamiento del método Find_by_{campo_en_la_tabla}().
  *
  * @param string $ClassName Nombre del método al que se invoca.
  * @param mixed $val Valor pasado por parámetro dentro del método.
  */
 public function __call($ClassName, $val = NULL)
 {
     $field = Singulars(strtolower($ClassName));
     $classFromCall = Camelize($ClassName);
     if (preg_match('/Find_by_/', $ClassName)) {
         $nustring = str_replace("Find_by_", '', $ClassName);
         return $this->Find(array('conditions' => '`' . $nustring . "`='" . $val[0] . "'"));
     } elseif (file_exists(INST_PATH . 'app/models/' . $field . '.php')) {
         $way = isset($val[0]) ? $val[0] : 'down';
         $foreign = strtolower($field) . "_id";
         $prefix = unCamelize(get_class($this));
         if (!class_exists($classFromCall)) {
             require_once INST_PATH . 'app/models/' . $field . '.php';
         }
         $obj1 = new $classFromCall();
         $conditions = "`" . $prefix . "_id`='" . $this->id . "'";
         if (get_parent_class($obj1) == 'ActiveRecord') {
             if ($classFromCall == get_class($this) and in_array($ClassName, $this->has_many_and_belongs_to)) {
                 $conditions = $way == 'up' ? "id='" . $this->{$foreign} . "'" : $conditions;
             } elseif (in_array($ClassName, $this->belongs_to)) {
                 $conditions = "id='" . $this->{$foreign} . "'";
             }
             return $conditions !== NULL ? $obj1->Find(array('conditions' => $conditions)) : $obj1->Niu();
         }
         return NULL;
     } else {
         return $ClassName($val, $this);
     }
 }