tengo una consulta "teórico/practica" se podría decir jaja. Actualmente estoy usando phpstorm como ide para desarrollo, pero no logro hacer que me traiga los métodos de mis modelos para hacer el autocompletado de código que tanto "amamos" mi modelo base es asi:
Código PHP:
un ejemplo de modelo sería asi:Ver original
/** * @package Punk Framework * @copyright Copyright (C) 2011 Onírico Sistemas. Todos los derechos reservados. * @version 0.3 * @author Lucas M. Sastre * @link http://www.oniricosistemas.com * @name Modelo.php * * @property Database $db * @property Config $config */ abstract class Modelo { protected $table; protected $keyField; protected $db; protected $sql; private $_columns; private $Config; private $seteados = 0; public $error = ''; public $ultimoId; /** * Contructor * * @access Public * @version 0.2 */ public function __construct() { $this->db = Database::singleton(); $this->Config = Config::singleton(); $this->debug = firePHP::getInstance(); $this->sql = ''; $this->iniciar(); } /** * inicia el ORM * @version 0.1 * @author Lucas M. sastre * @access protected * @name iniciar * */ protected function iniciar() { //si no hay seteada una tabla corto el proceso y muestro el error. if (!$this->table) { } //obtengo los campos de la tabla $query = "SHOW FIELDS FROM " . $this->table; $command = $this->db->QueryArray($query); $primary = ''; //recorro los campos y los guardo en un arrgeglo "name" => $command[$i]['Field'], "type" => $command[$i]['Type'], "defaultValue" => $command[$i]['Default'], "key" => $command[$i]['Key'], ); //obtengo la clave primaria if ($command[$i]['Key'] === "PRI") { $primary = $command[$i]['Field']; } $this->fields[$command[$i]['Field']] = ''; } $this->_columns = $fields; throw new Exception("No se encontro la columna clave para la tabla: " . $this->table); } $this->keyField = $primary; } ......
Código PHP:
Ver original
class ConfiguracionSitio extends Modelo { protected $table = "core_configuracion"; }
el autoload de los modelos es asi:
Código PHP:
Ver original
/** * Método para cargar los modelos * * @version 0.1 * @author Lucas M. sastre * @access public * * @param <string> $nombre * @return <void> * @property @var $nombre $nombre */ public function modelo($nombre) { return false; } foreach($nombre as $modelo) { //valido si existe el archivo del modelo if(file_exists($this->Config->get('path_root').$this->Config->get('modelsFolder').$modelo.'Model.php')) { //valido si no esta instanciada la clase previamente include_once($this->Config->get('path_root').$this->Config->get('modelsFolder').$modelo.'Model.php'); $this->$modelo = new $modelo(); } else { $this->$modelo = new $modelo(); } } else { $ruta = $this->Config->get('path_root').$this->Config->get('modelsFolder').$modelo.'Model.php'; return false; } } } } else { //valido si existe el archivo del modelo if(file_exists($this->Config->get('path_root').$this->Config->get('modelsFolder').$modelo.'Model.php')) { //valido si no esta instanciada la clase previamente include_once($this->Config->get('path_root').$this->Config->get('modelsFolder').$modelo.'Model.php'); $this->$modelo = new $modelo(); } else { $this->$modelo = new $modelo(); } } else { $ruta = $this->Config->get('path_root').$this->Config->get('modelsFolder').$modelo.'Model.php'; return false; } } }
y los llamo de esta manera en los controladores:
Código PHP:
Ver original
para poder usarlos asi:
Código PHP:
Ver original
$this->ConfiguracionSitio->busar();
Bien el problema que estoy teniendo es que cuando escribo en el editor $this->ConfiguracionSitio-> no me muestra los métodos del modelo. Conversando con un compañero de trabajo me dice que es sucede porque las clases estan mal creadas ya que si estuvieran bien creadas cualquier editor debería devolverme los métodos. Tiene razon mi compañero? hay forma de corregir esto?
Desde ya muchas gracias!