No seremos programadores Zend sino programamos orientado a objetos. En este documento vamos a tener una introduccion a los conceptos basicos de la POO. Y nos puede servir de guia para nuestros primeros pasos.
Tambien es importante que tengan como referencia la web oficial de PHP, y su capitulo de PHP5
jueves, 19 de junio de 2008
Programacion Orientada a Objetos
Python para todos
La gente de mundo geek realizo un manual de Python, titulado "Python para todos".
Es un manual muy bien escrito y claro. Es una excelente guia para aprender a usar Python y tenerlo como libro de referencia.
El temario que vamos a encontrar es el siguiente.
- Tipos básicos
- Control de flujo
- Funciones
- Orientación a objetos
- Programación funcional
- Excepciones
- Módulos y paquetes
- Entrada / Salida
- Expresiones regulares
- Sockets
- Interacción con webs
- Threads
- Serialización de objetos
Los que quieran descargarse el libro o saber mas al respecto pueden visitar la web de Mundo Geek en la sección del libro. O pueden usar la descarga directa que habilite hoy.
martes, 17 de junio de 2008
Zend Studio for Eclipse 6.01.
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
miércoles, 11 de junio de 2008
Utilizando componentes ZF individualmente
Una de las ventajas que tiene Zend Framework sobre otros, es que podemos usar sus componentes sin necesidad de migrar todo el sistema al framework, de esta manerapodríamos incluir en nuestro proyecto solo el componente de Base de datos Zend_Db. Lo único que tendríamos que hacer es en nuestra raíz del sistema crear una carpeta Zend que contenga las librerías que necesitemos para ese componente, es recomendable descargar todas las librerías.
Un ejemplo muy simple, para conectarnos en una base local, e insertar datos seria este1
<?php
2 require_once 'Zend/Db/Adapter/Pdo/Mysql.php';
3 $db = new Zend_Db_Adapter_Pdo_Mysql(array(
4 'host' => 'localhost',
5 'username' => 'desarrollo',
6 'password' => 'jsdlk123o',
7 'dbname' => 'trueque'
8 ));
9
10 $datos = array (
11 'nombre' => 'Josemir',
12 'estado' => '1',
13 );
14 $db->insert ( 'nombre_de_la_tabla', $datos );
15 ?>
Y listo. De la misma manera que usamos insert, podemos hacerlo con cualquiera de los otros metodos.
No solo es util para Zend_Db, sino para cualquiera de los demas componentes. En algunos casos es necesario cargar anteriormente el componente Zend_Loader.
Esto es util cuando queremos ir migrando de a poco nuestros sistemas.
lunes, 9 de junio de 2008
Errores tipicos programando POO en PHP5
Preparando la clase de PHP Orientada a objetos que empiezo a dictar hoy, me encontre con estos 10 tipicos errores, Programando PHP Orientado a Objetos. Muchos puntos parecen basicos pero increiblemente se ven a menudo.
El articulo fue extraido de Cristal Labs
1. Usar variables globales dentro las clases: una de las ventajas más importantes de la programación orientada a objetos es la reusabilidad de los códigos. Al usar variables globales ($_GET, $_SESSION, $_POST, $_COOKIE, global) dentro de las clases, esta se ve comprometida considerablemente. La razón es que todos los proyectos no tienen las mismas variables globales.
2. Mezclar código HTML en la definición de las clases: es una de las cosas que me sorprenden cada vez que la veo. Es inaceptable que esto se le haya ocurrido a algunos. Al mezclar HTML en el código PHP se compromete la reusabilidad de la clase, no todos los proyectos tienen el mismo código HTML.
3. Imprimir salida (echo) dentro de las clases: aunque esto se parece a la anterior, me refiero a los echo o similares dentro de los métodos. Si una clase no está destinada para emitir salida no lo debe hacer. Para eso muchos utilizamos sistemas de plantillas.
4. Identificadores de clases, métodos y propiedades sin sentido: un identificador siempre debe ser lo más descriptivo posible. A muchos le gusta usar identificadores increíblemente irrelacionados con su propósito. Esto compromete enormemente la lectura de un código. (Mira las reglas de codificación en PHP)
5. Mezclar uso de versiones de php en una misma clase: a partir de la versión 5 de PHP, la programación orientada a objetos se puede implementar de una manera más formal, pues se introdujo los modificadores de visibilidad public, private, protected. Aparte de que se pueden crear clases de alto nivel (clase Abstractas) y métodos abstractos con la palabra reservada abstract. También se pueden definir los métodos y propiedades estáticas formalmente con la palabra reservada static. Mezclar la programación orientada a objetos en PHP 4 (donde todo era publico) con la de PHP 5 hace un código “sucio”. Consejo: elige una de las versiones y programa para ella.
6. Más de una clase en un mismo archivo: definir distintas clases en un mismo archivo es otra de las cosas que no se debe hacer. Las clase se han de componer lo más reusables posible y si puedes nombrar al archivo con el nombre de la clase muchísimo mejor. Sigue el camino de los grandes lenguajes como: Actionscript, Asp.net, Java entre otros.
7. No hacer pruebas unitarias a las clases: al terminar de codificar una clase recuerda de hacer pruebas unitarias para asegurar el correcto funcionamiento de clase. Esto es simplemente probar todos los posibles caminos que pueda tomar un estado (propiedad), parámetro de método, etc para que la clase no “explote”.
8. Todos los métodos y las propiedades publicas en una clase de PHP 5: los programadores novatos cometen el error de definir todos los métodos y propiedades como públicos, por desconocer las ventajas de los modificadores visibilidad. En PHP este es un problema grave porque no hay tipeado de datos. El problema de las propiedades públicas es que no podemos controlar de manera fácil el tipo de datos que contiene por lo que nuestra clase pudiera explotar por un tipo de dato inesperado. Si no estas seguro de que visibilidad le debes poner a una propiedad hazla privada. Valida los tipos de datos de las propiedades al menos de una manera básica.
9. Duplicación de métodos para ocultar falla de lógica: A diferencia de otros lenguajes como Java y C++, PHP no admite la sobrecarga de métodos. Al menos no de la manera tradicional. Esto, sin embargo, no es excusa para duplicar métodos sólo porque un dato cambia para la operación que éste realiza.
10. Variables de configuración dentro de las clases: Los datos de configuración de base de datos, web services y otros deben ir en un archivo de configuración aparte, NO dentro de la clases que hacen uso de estas. Aunque se admite en clases que sea exclusivamente para ello.
A estos puntos yo añadiria los siguientes
A- No usar clases genericas, que incluyan metodos o propiedades que no tengan nada que ver con el identificador
B- No declarar las propiedades como publicas, para eso tenemos los metodos getter y setter. Cada objeto y solo ese objeto debe saber sus propiedades.
Y seguramente me estoy olvidando de alguna más
martes, 3 de junio de 2008
Ruby Facíl
Ruby Facíl es un libro con licencia creative commons creado por Diego F. Guillém Nakamura, el libro es bastante simple y claro si queremos empezar a aprender Ruby, esta edicion no habla de Rails, el framework que hizo famoso a Ruby, pero es una buena base.
miércoles, 28 de mayo de 2008
PHP vs RoR
Hoy encontre unos graciosos videos donde la gente de ruby, se roba (literalmente), la idea de la publicidad Mac vs PC.
En estos videos se habla de lo simple que es usar ruby y como genera envidia en la gente de PHP.
Aca voy a subir los videos comparando RoR con PHP, pero hay varios, comparandolo incluso con .net.
Veremos quien sigue en pie en 10 años ;).
Obviamente nunca hay que aferrarse a un lenguaje, hay que aprender y conocer distintas tecnologias para nosotros decidamos cual es nuestra mejor alternativa.
Es gracioso que el gordito de PHP, use la remera de cake, porque es un framework que esta basado en PHP 4.
Otro punto tambien es en el segundo video hace alarde del uso de MVC, cuando en PHP tenemos Zend y otros framework que trabajan sobre este patron.
Ruby es Ruby gracias a su Framework, Ruby on Rails y que es un lenguaje POO puro, basado en la idea de Smalltalk. La idea de diseñar aplicaciones 2.0 de fomra rapida y efectiva es muy tentador. El codigo es bastante simple he intuitivo, pero con esto no estoy desmereciendo a PHP, sino que seria bueno tomar de Ruby lo mejor de èl, con PHP5 el codigo es mas claro, con Zend y otros, conseguimos trabajar en MVC de manera limpia. Hay una tendencia que dice que PHP va bien, y estara mejor.
Y si ruby anda bien, en dos años me estare comprando mi primera Mac Pro, y dejare Zend Studio para usar RadRails :P.
Scaffolding en Zend Framework
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.".
Entendiendo el modelo de Objetos en PHP5
En el blog de Sebastian Bergman, encontré un documento titulado "Understanding the PHP Object Model" ( 'Entendiendo el modelo de objetos en PHP'), esto esta basado obviamente en PHP5. Si bien esta en ingles, hay mas código que texto, y creo que esta mas que claro. Los que sigan trabajando con PHP4, van a notar muchas cambios con respecto a su código. Y la verdad que PHP4 no se podía considerar Orientado. PHP5 es una evolución notoria en este aspecto. Si bien todavía nos falta un camino, el lenguaje evoluciono bastante. Ahora faltan algunos detalles, algunos se van a agregar en la versión de PHP6 que son el manejo de paquetes, y otros probablemente vendrán pronto.
Bueno les dejo el documento para que lo disfruten
Steve Jobs - 3 Historias
El discurso es un poco viejo (2005), pero me gusto mucho en su momento, y mas viniendo de un personaje tan importante como uno de los fundadores de Apple, el discurso esta dividido en dos partes, en la primer parte van a tener las dos primeras historias y en el segundo video la tercer y ultima historia.
Es algo que vale la pen ver, o re ver para los que ya lo vieron
Primer video
Segundo Video