/** * Carrega os valores de uma relação N_2_N entre 2 tabelas onde uma classe * asssociativa faz associação dos itens. Para carregar um atributo multivalorado * é preciso que ele seja uma propriedade * * A classe associativa "default" é a junção do nome das duas tabelas da * relação. * Ex.: * class Item {} * class Pedido {} * * Um item pode estar em vários Pedidos, e um pedido pode ter vários itens, * portanto é necessário uma classe associativa entre elas, sendo assim o * nome default dessa classe é ItemPedido * * class ItemPedido{} * * $pedido = new Pedido(1); * $pedido->getDao()->load_N_2_N_Propertie("item"); * var_dump($pedido->getItem()); * * * @param string $object objeto que será usado * @param string $propertieName nome da propriedade do tipo array() que será carrregada * @param string $associativeClassName nome da classe associativa */ public function load_N_2_N_Propertie($object, $propertieName, $associativeClassName = "", $order = "", $limit = "", $loadInternalObjectAtributes = true) { $prop = $this->ref->getProperty($propertieName); //pega a propriedade especificada //$met = $this->ref->getMethod(MethodSintaxe::buildSetterName($propertieName)); // pega o setter da propriedade //define o nome da classe associativa se default if (self::isEmpty($associativeClassName)) { $associativeClassName = ucfirst($propertieName) . $this->ref->getName(); } $c = new CRUD($associativeClassName); $atr1 = strtolower(substr($this->ref->getName(), 0, 1)) . substr($this->ref->getName(), 1); $array = $c->loadLightArray($atr1 . "=" . $object->getId(), $order, $limit, false, $loadInternalObjectAtributes); $arrayValoresCertos = array(); foreach ($array as $a) { $strEval = '$arrayValoresCertos[] = $a->get' . ucfirst($propertieName) . '();'; eval($strEval); } $strEval = '$object->' . $propertieName . '=$arrayValoresCertos;'; eval($strEval); }
/** * Retorna um node XML do objeto, as tags HTML dos conteudos dos obetos são * codigicados por htmlentities() * * @param string $whereCondition condição de carregamento * @param string $order ordem dos registros * @param string $limit limite de registros * @param boolean $lightMode se serão carregados os objetos dentro dos objetos * @param boolean $addXmlRootTags * @return string node xml dos registros */ public static function tSamus_Controllerml($classOrObject, $whereCondition = "", $order = "", $limit = "", $lightMode = false, $addXmlRootTags = false) { $crud = new CRUD($classOrObject); $obj = self::getInstance($classNameOrObject); $crud->loadLightArray($whereCondition, $order, $limit, false, !$lightMode, true); $str = CRUD::$xmlStr; if ($addXmlRootTags) { $str = '<?xml version="1.0" encoding="ISO-8859-1"?> <root>' . $str . "</root>"; } CRUD::$xmlStr = ""; return $str; }