Temas etiquetados como: ‘zend studio’

Autocompletado de código CakePHP en Zend Studio

7 Marzo, 2009

Para programar PHP me gusta usar Zend Studio. He probado diferentes alternativas y esta es la que más me ha convencido. Pero tiene una pega, y es que cuando uso cakePHP como framework no consigo todo el autocompletado de código que quisiera. Hasta ahora.

Cuando usamos un Model o un Component en un Controller, como se cargan dinámicamente, Zend Studio no reconoce sus métodos. La solución que he encontrado ha sido crear un atributo por cada modelo en la clase AppController y mediante el uso de documentación phpDoc indicar el tipo del atributo. Por ejemplo, supongamos que tengo un modelo llamado Post:

/**
 * @var AppModel
 */
public $Post;

Zend Studio interpreta que $Post es de tipo AppModel por lo que ya disponemos de los métodos de AppModel que Post hereda. Tiene una pega, y es que si creamos métodos propios en nuestro modelo esto no nos servirá.
Para tener autocompletado  de código en componentes es prácticamente igual:

/**
 * @var Component
 */
public $RequestHandler;

¿Y qué hay de los Helpers? En el archivo /app/config/bootstrap.php incluimos el siguiente código:

if(false) {
	$ajax = new AjaxHelper();
	$form = new FormHelper();
	$html = new HtmlHelper();
	$javascript = new JavascriptHelper();
	$number = new NumberHelper();
	$session = new SessionHelper();
	$text = new TextHelper();
	$time = new TimeHelper();
	$pagination = new PaginationHelper();
	$rss = new RssHelper();
	$xml = new XmlHelper();
	$number = new NumberHelper();
}

Como se ve en el código, por cada Helper creamos un nuevo objeto. El truco está en que esto está dentro de un if en el que nunca se entrará por lo que no afecta a nuestro código, sin embargo Zend Studio lo interpreta.
Podríamos incluirlo en cualquier archivo, pero cakePHP reserva específicamente el archivo bootstrap.php para que metamos ahí lo que queramos.

No lo he probado, pero supongo que este proceso sirve igualmente para Eclipse PDT.