June 30th, 2008 Category: Zend
No Comments »
A partir de la estructura de directorios que hicimos en el post anterior, vamos a crear nuestros primeros modelos.
Los modelos contienen la logica de negocio, en nuestro caso los modelos estan fuera de los modulos, para evitar la dependencia de un modulo especifico. Esto se debe a que un modulo, puede usar varios modelos, y no su modelo en particular.
En mi caso los modelos heredan la clase Zend_Db_Table, pero podemos incluir una clase propia intermedia. Eso es totalmente configurable.
Los metodos publicos de los modelos son estaticos e instancian a la clase, esto se hace para que se puedan acceder desde cualquier lado del sistema, sin la necesidad de instanciar la clase, y si usamos Zend Studio for Eclipse, al escribir el nombre de la clase, por ejemplo Usuarios:: nuestro IDE nos muestra el listado de metodos publicos.
una clase modelo puede tener la siguiente estructura
fetchAll(); }}?>
Para llamar al metodo getUsuarios desde cualquier parte del sistema podemos hacer Usuarios::getUsuarios(); y nos va a devolver los registros de la tabla usuarios.
June 30th, 2008 Category: Zend
3 Comments »
Zend Framework es un conjunto de componentes que nos facilitan la resolucion de problemas comunes, el acceso a una base de datos, la administracion de permisos, la creacion de WS, el manejo de OpenId, envio de mails, creacion de pdf, etc. En cada version del framework se agregan mas componentes.
El framework trabaja con MVC pero no obliga a hacerlo, podemos usar Zend Framework como libreria de una aplicacion sin ser MVC, pero este cuenta con componentes para el Manejo de MVC, Zend_View, y Zend_Controller.
En nuestra estructura de es directorios vamos a tener el siguiente esquema
* Application: aca van todos los modulos y funcionalidades del sistema. Dentro de cada modulo, dos carpetas, controllers y views. Los modelos estan fuera de application, y dentro de la raiz del proyecto, el motivo es que esten dentro del path del sistema, asi pueden ser llamados desde cualquier punto del sistema, gracias al autoload de ZF.
* Config: incluye los .ini de configuracion. Configuracion de Base de datos, o configuraciones varias.
* HTML: Esta es la unica carpeta de acceso publico, cualquiera agregando la url puede acceder desde el navegador. Esta carpeta esta dividida en varios items. Inicialmente, tenemos una carpeta clientScripts donde esta todo nuestros js, en scripts, tenemos una carpeta layout, con todos los layout del sistema, una carpeta images, y otra styles.
* Library: Aca esta la libreria de Zend, y podemos agregar una carpeta con nuestras librerias.
* Models: Todos los modelos. Los metodos publicos son estaticos, para que no sea necesario instanciar la clase para usarlos.
* Sql: Aca esta los dump de la base de datos.
Y por ultimo tenemos nuestro bootstrap, index.php , que se encarga de ejecutar los modulos, y la configuracion basica del sistema, ademas de cargar las librerias necesarias. El .htacces redirecciona todas las peticiones al index.php.
Otros articulos:
Estructura de directorios – Blog de Zsamer
June 17th, 2008 Category: Programacion Zend
No Comments »
Ya tenemos la nueva versión de Zend Studio para “comprar”.
Al parecer solucionaron los problemas de cuelgues habituales en ZS.
Lo mas destacado de los cambios son.
- Soporte para Zend_Layout.
- Zend Framework 1.5.2
- Paquete de lenguajes para Alemán, Italiano y Danés (para cuando el español? )
- Supuestamente solucionaron los problemas de cuelgues y consumo excesivo de memoria. Para solucionar esto en la versión 5 tenia que deshabilitar los builders, y Validation de cada proyecto.
- Refactoring: Ahora además de hacer refactoring rename, también podemos mover y organizar includes
Pero en definitiva, después de leer todo esto me baje el trial y lo probé un poco.
Esta es la pantalla que aparece mientras carga el IDE.
Una vez cargado lo primero que hice fue modificar mi workspaces a /var/www. Cuando se reinicio aparecieron los proyectos que ya tenia cargado en la versión anterior.
Lo segundo a configurar es la forma en que nos formatea el código, y para eso fui a windows->preferences->php->formatter y elegí la opción Zend Framework en Active Profile. Acá también podemos configurar nuestros propios standar de código (no recomendable).
Cuando quise entrar en Code Gallery, el sistema colapso y tuve que cerrarlo forzosamente.
Como ven en la imagen el consumo de memoria era bastante alto.
La realidad que el resto anda muy bien, podemos ver al eterno builder trabajando más rápido.
Y las nuevas opciones de refactoring en el menú contextual.
Zend Studio es el IDE mas completo y profesional para PHP5 y su integracion con Zend Framework. Pero todavía le falta algunos puntos como la optimizacion de recursos.
Lo probé en un Pentium 4 2.8 ghz 1gb de memoria ram con Ubuntu 8.04
Si queres saber mas sobre esta versión entra en este link
May 28th, 2008 Category: Zend
1 Comment »
El otro día tratando de encontrar si había algún proyecto de implementar la técnica de Scaffolding que tanto trabajo nos quita a los programadores. Me encontré con que existe un componente creado por la gente de Zend que si bien aun esta en desarrollo (Zend_Controller_Fron_Scaffold ), seguramente pronto podremos contar con el para implementarlo en nuestras aplicaciones. En PHP el scaffolding lo implementan el framework: CakePHP, y Symfony.
Encontré una definición en el blog de Carlos Leopoldo que nos va a orientar que es esta técnica:
“La palabra Scaffold está en inglés y en español significa Andamio
, pero en programación el scaffolding es un método para contruir aplicaciones basadas en bases de datos, esta técnica está soportada por algunos frameworks del tipo MVC en el cuál el programador escribe una especificación que describe cómo debe ser usada la base de datos. Luego el compilador utiliza esa especificación para generar el código que la aplicación usará para crear, leer, actualizar y eliminar registros de la base de datos, esto es conocido cómo CRUD (create, read, update, delete).El Scaffolding fue popularizado por el framework Ruby on Rails y ahora es utilizado por otros frameworks también cómo CakePHP, Symfony.”.
March 31st, 2008 Category: Programacion Zend
No Comments »
La gente de Zend ha dado una documentacion para que los programadores de php sigamos un standar de sintaxis de codigo. La idea que tiene esta documentacion es que podamos unviersalizar la sintaxis para que si otra persona lee nuestro codigo pueda leerlo y no complicarse.
Convencion de nombres:
* Para los nombres de las clases vamos a usar el sistema CamelCased, que se basa en que un nombre no contenga espacios, y cada palabra empieze con Mayuscula.
* Usar underscores (_) para separar paquetes logicos.
Ejemplos:
Spreadsheet_Excel_Writer
Services_Google_AdWords
* El nombre de la clase determinara el nombre del archivo.
* Tendra el sufijo .php
* El nombre de la clase determinara el directorio en el que tiene que estar el archivo.
Ejemplo:
Class Spreadsheet_Excel_Writer
var/www/public/Spreadsheet/Excel/Writer.php
* Una Clase por archivo.
* Las variables usan el sistema camelCased, con la primer letra en minuscula.
* Las constantes se escriben totalmente en mayusculas, y se separan las palabras con un undersocre.
* Los metodos privados y propiedades del metodos tiene el prefijo underscore en su nombre.
Ejemplos:
private function _getElement(){}
private $element;
* En las funciones y clases la llave se ingresa en la linea siguiente de la declaracion a la misma altura que la declaracion
Ejemplo:
protected function _getElement()
{
}
* En las estructuras de control las llaves se ingresan en la misma linea de la declaracion
Ejemplo:
while($true){
}
* No se pueden usar tabs para separar codigo, solo espacios
* Son 4 espacios por nivel de identacion
Los editores generalmente tienen la opcion para configurar esto, y reemplazar un tab por 4 espacios.
Ejemplo general:
1
<?php
2 class Zend_Foo_Bar Extends Zend_Foo
3 {
4 const BAZ = 0;
5 public $fooVar;
6 private $_barVar;
7 public function sayHello($name)
8 {
9 if ($name == 'Matthew') {
10 }
11 }
12 }
13 ?>
* Todas las estructuras usan llaves.
Ejemplo de mal uso:
if($name == ‘Mathew’)
echo $name;
* Una linea puede tener como maximo entre 75 y 85 caracteres.
* No pueden haber comentrarios con #


