Archivos por la Categoría ‘PHP’

Disponible versión final de Netbeans 6.8

Viernes, Diciembre 11th, 2009

Por fin ya está disponible la versión final de Netbeans 6.8. Esta versión trae muchas mejoras, entre ellas las más sobresalientes son las siguientes:

  • Soporte para la edición empresarial de Java 6 (recién liberada también)
  • Proyectos web con Java Server Faces (JSF) 2.0
  • Soporte mejorado para JavaFX
  • Soporte para kenai.com (página para colaboración entre desarrolladores)
  • Soporte para PHP 5.3
  • Ruby 1.9 y Rails 2.3.4
  • Mejor soporte para Groovy y Grails
  • Entre otras…

Así que no esperen más y descárguenlo para obtener los beneficios de esta nueva versión. Yo por mi parte ya lo tengo instalado en ambas particiones, en Ubuntu y Windows 7 y lo utilizo para proyectos de java y php principalmente.

Symfony 2.0 sí soportará PHP 5.3

Viernes, Noviembre 6th, 2009

A pocos días de que se anunció que symfony 2.0 no soportaría la más reciente versión de PHP en un debate que hubo entre diferentes partidarios de frameworks de PHP, Fabien Potencier dijo que después de meditarlo mejor llegó a la conclusión de que sí es buena idea actualizarse a la versión 5.3.

Los planes son que de la versión 2.0 para adelante, brindarán soporte a PHP 5.3, y la versión 1.4 proporcionará soporte para los usuarios que aun no puedan o quieran hacer el salto a la nueva versión de PHP.

Citó que tomó la decisión porque son muchas las cosas buenas que ofrece PHP 5.3 a nivel de lenguaje como el uso de espacios de nombres, closures, funciones anónimas entre otras y también a nivel de herramientas. También mencionó que aun cuando Symfony no requiere del Zend Framework para sus funciones básicas, sí hay programadores que utilizan ciertas partes de ZF para agregar funcionalidad a sus sitios desarrollados con Symfony; por lo tanto es importante que ambos frameworks tengan los mismos requerimientos para no afectar a los desarrolladores.

Por mi parte la considero una muy buena noticia, ya que Symfony es uno de las mejores frameworks que existen para PHP y es bueno saber que no se quedará detrás de los otros frameworks.

Configurando Netbeans con PHP para sitios remotos

Jueves, Noviembre 5th, 2009

En esta ocasión presentaré un pequeño tip que me ha servido para utilizar mi editor favorito (Netbeans) con proyectos de PHP que se encuentren en un servidor remoto.

El primer paso obviamente será descargar Netbeans y posteriormente instalarlo; al momento de este artículo, la versión más reciente estable de Netbeans es la 6.7. Puedes optar por descargar el instalador que ya incluye soporte para PHP o de lo contrario posteriormente descargar el plugin dentro del mismo IDE.

Dentro de Netbeans, creamos un proyecto con la opción File -> New Project.

Seleccionamos la categoría de PHP y luego seleccionamos PHP Application, y hacemos click en Next.

Introducimos el nombre del proyecto, y en la opción Sources Folder ponemos la carpeta donde queremos que se descargue el código del servidor remoto.

En la siguiente pantalla, debemos poner las configuraciones:

  • Run As: Remote Web Site
  • Project URL: La dirección del sitio local, por ejemplo http://localhost/misitio/
  • Index File: el archivo que utilizará Netbeans para ejecutar el proyecto (normalmente index.php)
  • Remote connection: debemos utilizar el botón Manage para agregar una nueva conexión FTP a nuestro servidor, proporcionando los datos de host, usuario, contraseña y directorio inicial; podemos utilizar el botón Test dentro de esa ventana para comprobar que todo está correcto.
  • Upload directory: en caso de que en la opción anterior, en “directorio inicial” hayamos puesto el directorio raíz de nuestro sitio web, entonces en esta opción podemos especificar el directorio de nuestro sitio actual. Si no, lo dejamos vació.
  • Upload Files: podemos seleccionar la opción de subirlos al ejecutar la aplicación (On Run), al guardar los archivos (On Save) o manualmente (Manually)

Y ya con esto terminamos con la configuración de nuestro sitio web remoto.

Para finalizar, debemos dar click con el botón derecho del mouse sobre la carpeta Source files en el pánel del proyecto y hacer click en la opción Download para descargar nuestros archivos. Posteriormente, cada cambio que realicemos será sincronizado con el servidor remoto dependiendo de la opción que hayamos seleccionado.

Espero que este truco les ayude con su programación en Netbeans con PHP.

Aun así, siempre que sea posible es mejor utilizar Subversion, SVN o algún otro programa para controlar las versiones del código fuente, sobre todo si hay más de un programador en el proyecto.

Zend y Oracle unen fuerzas para ofrecer solución empresarial Linux-PHP

Jueves, Noviembre 5th, 2009

la compañía Zend Technologies que es la que respalda al lenguaje PHP anunció hoy que se encuentran trabajando de la mano con Oracle para lanzar una solución integrada y optimizada a nivel empresarial de Linux y PHP para implementar y manejar aplicaciones Web de negocios críticos.

Para extender el acceso al Servidor Zend – El cuál es el servidor Web empresarial de la compañía Zend – está ahora también disponible a través de la Oracle Unbreakable Linux Network (ULN).

Estas son buenas noticias para la comunidad PHP, ya que la alianza entre Zend y Oracle ayudará a mitigar más aun la imagen que se tenía antes de PHP como lenguaje script que sólo era adecuado para utilizarlo en la construcción de páginas web sencillas.

La noticia original puede leerse en la página de Zend (información en inglés).

Debate entre partidarios de frameworks de PHP

Martes, Noviembre 3rd, 2009

Partidarios de diferentes frameworks de desarrollo en PHP se enfrentaron en un debate hace unos días, cada uno resaltando los beneficios de sus respectivos proyectos.

Los frameworks representados durante el panel en la conferencia Zend/PHP en San José, California incluyen Agavi, CakePHP, CodeIgniter, Symfony y Zend Framework.

David Zulke, líder de desarrollo del framework Agavi y director general de la firma de consultoría Bitextender, comentó que su proyecto inició como una ramificación del proyecto Mojave. Ofrece capacidades de validación y manejo de fuentes pero no ofrece la posibilidad de “scaffolding” para generar el modelo de datos de una aplicación. Los desarrolladores pueden tomar una aplicación existente y ponerle una capa REST o SOAP en ella. Zulke resaltó la importancia de una buena estructura para el desarrollo, diciendo, “Creo que es la responsabilidad del framework proporcionarnos una estructura para los proyectos”.

CakePHP puede ser utilizado por personas con experiencia en desarrollo limitada, dijo Nate Abele, líder desarrollador del proyecto.
“Creo que lo que podría decir que es especial de CakePHP es que pienso que hemos tenido éxito al ser muy consientes del contexto,” Dijo Abele. “Siempre nos hemos enorgullecidos de presentar conceptos de programación de alto nivel de una forma muy accesible”.

El partidario por CodeIgniter compartió comentarios similares.
“Siento que CodeIgniter es un framework muy fácil de aprender,” dijo Ed Finkler, desarrollador web e investigador de seguridad de la Universidad de Purdue. “CodeIgniter proporciona una buena base para implementar fácilmente y además es muy rápido ya que usa cargado dinámico. Aun así, CodeIgniter podría no ser la mejor opción para desarrollar aplicaciones muy grandes y complejas; es más adecuado para projectos pequeños o medianos.”

Symfony, mientras tanto, es un framework francés basado en MVC que hace alarde de grandes capacidades en la seguridad, dijo Fabien Potencier, desarrollador líder de Symfony y Director Ejecutivo de Sensio, una empresa de desarrollo web enfocada a tecnologías Open Source.

“Si te gusta la comida francesa, si te gusta el vino francés, creo que definitivamente te encantará Symfony,” dijo Potencier. “Tenemos un enfoque muy fuerte en la seguridad. Tratamos de que el framework sea tan seguro como sea posible desde el inicio,” dijo, haciendo incapié en que se ofrece protección contra problemas de secuencias de comandos cross-site.

“Symfony ha sido usado para construir algunos de los sitios más grandes del mundo, como por ejemplo Yahoo”, dijo Potencier.

Zend Framework difiere de las alternativas anteriores ya que los desarrolladores no están obligados a utilizar MVC, dijo Matthew Weier O’Phinney, lider del proyecto Zend Framework. “Alentamos las pruebas unitarias y también la documentación del código,” dijo O’Phinney.

El Zend Framework entra en juego cuando uses otros frameworks, dijo. “La manera en que lo veo es que probablemente utilices el Zend Framework aun si estás utilizando los otros,” dijo O’Phinney.

Los diferentes partidarios también ofrecieron una visión a los planes de soportar PHP 5.3, el cual agrega características como espacios de nombres para mejorar la organización del código.

Zend Technologies que es la empresa desarrolladora del framework Zend, está reflexionando en la posibilidad de agregar suporte de PHP 5.3 a la versión planeada de 2.0 del framework, dijo O’Phinney. Esa versión podría salir al final del próximo año, de acuerdo a Andi Gutmans, Director Ejecutivo de Zend.

Hace un año se empezó un desarrollo desde cero de CakePHP basado en PHP 5.3 implementando espacios de nombres.

Symfony 2.0 no incluirá características de PHP 5.3 dijo Potencier, comentando sus inquietudes acerca de que los usuarios podrían aun no estar listos. “Symfony es usado por grandes compañías, y muchas de ellas aun no pueden arriesgarse a actualizar a la versión más reciente de PHP,” comentó. “Tomará mucho tiempo para que ellos se actualicen a la versión 5.3 de PHP,” dijo Potencier.

Pero Zulke no estuvo de acuerdo con el punto de vista de Potencier. “PHP 5.3, antes que nada, es un gran logro,” dijo Zulke. “Realmente proporciona muchos beneficios, y creo que el porcentaje de adopción será mucho más alto que el de la versión 5.2 y la 5.1″

El artículo original fue publicado en InfoWorld en el siguiente enlace: http://www.infoworld.com/d/developer-world/php-frameworks-square-238

Utilizando plantillas con PHP

Lunes, Noviembre 2nd, 2009

Mi primer acercamiento con plantillas con PHP fue con Smarty hace unos años… después de que las utilicé en esa ocasión siempre he tratado de utilizar librerías o frameworks que tengan algún concepto similar.

Afortunadamente ahora la mayoría de los frameworks más utilizados se basan en el patrón de diseño MVC (Modelo-Vista-Controlador). Eso significa que proporcionan un método para separar la vista del código y aparte ofrecen una manera de organizar las vistas con layouts o plantillas.

Puede ser que la utilización de las plantillas complique un poco la programación al principio, sobre todo si el sistema o página web no es muy grande. Pero los beneficios que se obtienen son mucho más grandes y valen la pena. El hecho de no tener que repetir el mismo código en cada una de las páginas dentro del sitio es una ventaja enorme (imagínate tener que poner el mismo código en 100 páginas, y peor aun, tener que modificar esas 100 páginas para cambiarle algo).

Si deseas saber más de estas librerías puedes consultar las siguientes páginas:

Cabe señalar que en el caso de Smarty, sólo es una librería para el uso de templates (plantillas) mientras que los otros son frameworks completos que involucran el uso de controladores y modelos y por lo mismo son ligeramente más completos, sobre todo al momento de configurarlos. De todos modos les recomiendo que hagan uso de ellos cuando sea posible y se ahorrarán muchas líneas de código y muchos dolores de cabeza.

IntelliJ IDEA se une a la lista de IDEs open source

Viernes, Octubre 30th, 2009

Hace unos días Jetbrains (la empresa creadora de IDEA) anunció que lanzará una versión open source de este magnífico IDE. Esta versión se llama IntelliJ IDEA Community Edition y es una versión reducida en características de la versión comercial.

Con este lanzamiento se une a NetBeans y Eclipse en el campo de IDEs open source enfocados principalmente a Java pero con soporte para varios lenguajes como PHP, Ruby, Python, etc. Es bueno tener una opción más para nosotros los programadores.

Si deseas descargar el programa, lo puedes hacer mediante el siguiente enlace.

Usando interfaces en PHP

Lunes, Octubre 26th, 2009

Un tema que ocasiona mucha confusión entre los programadores de PHP que están iniciándose en la programación orientada a objetos es el de las interfaces.

En este artículo intentaremos despejar algunas dudas relacionadas con su uso.

Para empezar, es necesario responder a la primera pregunta; ¿Qué son las interfaces?

  • Las interfaces son como clases 100% abstractas, es decir, tienen métodos pero ninguno de estos tiene código.
  • Las interfaces no pueden ser instanciadas, son utilizadas para ‘inyectar cualidades’ a las clases.
  • La principal diferencia entre las interfaces y las clases abstractas es que éstas últimas puedes tener métodos concretos y abstractos, y las primeras sólo métodos abstractos, es decir, sólo la declaración, sin definición.

Veamos ejemplos para aclarar un poco estos puntos.

Interface

interface Ave
{
  function volar();
}

Clase

class Perico
{
  function respirar()
  {
    echo 'respirando...';
  }
}

Clase usando una interface

class Perico implements Ave
{
  function respirar()
  {
    echo 'respirando...';
  }
  /* Los métodos de la interface deben ser implementados por la clase */
  function volar()
  {
    echo 'volando...';
  }
}

Nota: es importante recordar que los métodos de la interface deben ser implementados al 100% por clase que haga uso de aquella.

Objetivos de las interfaces:

  • Permiten crear y definir una estructura común para tus clases.
  • Resuelven el problema de la herencia múltiple.
  • Son excelente para el trabajo equipo, ya que puedes definir la estructura general del proyecto y dejar que los programadores se preocupen por los detalles de la implementación.

Cuándo usar interfaces en lugar de clases

  • Si en el programa hay una clase que no sea instanciada en ninguna ocasión, probablemente podría ser convertida en una interface.
  • Cuando de antemano no conoces los detalles de los métodos de un objeto.
  • Cuando desees establecer una estructura base para el proyecto.

Conclusión

Las interfaces nos permiten reutilizar el código y de esta forma tener mejor organizado el proyecto para futuras modificaciones. Es cuestión de atrevernos a hacer uso de ellas en nuestros proyectos, y de esta forma nos iremos familiarizando cada vez más y les sacaremos mejor provecho.

Nuevas características de PHP 5.3 (parte 1)

Jueves, Octubre 22nd, 2009

Hace unos meses salió la versión 5.3 de PHP y para buena noticia de todos los que ansiosamente esperamos la versión 6, esta versión incluye varias mejoras que originalmente estaban planeadas para la siguiente.

Este artículo describe brevemente esas nuevas características y proporciona ejemplos útiles para su uso. Lo que no incluye el artículo son instrucciones para instalar esta nueva versión. Pero si deseas descargarlo puedes seguir el siguiente enlace.

Espacios de nombres (Namespaces)

Antes de que PHP fuera orientado a objetos, los desarrolladores se veían obligados a utilizar funciones con nombres muy largos, esto para evitar conflictos con otras librerías. Por ejemplo, WordPress utiliza funciones como wp_update_post y wp_create_user. El prefijo wp_ indica que la función pertenece a la aplicación WordPress y reduce las posibilidades de conflicto con cualquier otra función existente.

<?php
 
class Usuario {
  public function establecerDatos($propiedad, $valor); { ... }
  public function guardar() { ... }
}
 
$usuario = new Usuario();
$usuario->establecerDatos('nombre', 'José');
$usuario->guardar();

En el ejemplo anterior, el método guardar no tendría conflictos con otros métodos, ya que está contenido dentro de la clase Cliente. Sin embargo, qué pasaría si en alguna otra parte del sistema existiera otra clase llamada Usuario? Esto principalmente podría ocurrir al integrar diversas aplicaciones open source, ya que cada una de ellas cuenta con sus propias clases y funciones.
Para solucionar este problema, se introdujo la nueva palabra clave namespace. Modifiquemos el ejemplo anterior haciendo uso de la nueva palabra clave:

namespace MiEmpresa\Blog;
 
class Usuario {
  public function establecerDatos($propiedad, $valor); { ... }
  public function guardar() { ... }
}
 
$usuario = new MiEmpresa\Blog\Usuario();
$usuario->establecerDatos('nombre', 'José');
$usuario->guardar();

A simple vista los beneficios podrían no parecer obvios, ya que podriamos haber utilizado MiEmpresa_Blog_Usuario. Sin embargo, ahora podemos crear otra clase Usuario que pertenezca al submódulo de CMS usando un espacio de nombres diferente:

namespace MiEmpresa\CMS;
 
class Usuario {
  public function establecerDatos($propiedad, $valor); { ... }
  public function guardar() { ... }
}
 
$usuario = new MiEmpresa\CMS\Usuario();
$usuario->establecerDatos('nombre', 'José');
$usuario->guardar();

Por lo tanto, ahora podemos utilizar las clases

MiEmpresa\Blog\Usuario
MiEmpresa\CMS\Usuario

La palabra clave use
Utilizar clases dentro de espacios de nombres aun resulta en tener que escribir mucho código, y si utilizas varias clases de un mismo espacio de nombres se vuelve peor. Para estos casos es que la palabra use es muy útil, ya que permite acortar un poco el código al momento de utilizar clases dentro de espacios de nombre.

<?php
use MiEmpresa\Blog;
$usuario = new Blog::Usuario();
$mensaje = new Blog::Mensaje();

Y también la puedes utilizar para definir directamente clases como se muestra a continuación:

<?php
usr MiEmpresa\Blog\Usuario;
$usuario = new Usuario();

Alias de espacios de nombres
Anteriormente es este artículo, había comentado que una ventaja de usar espacios de nombres es la posibilidad de definir más de una clase con el mismo nombre pero en diferentes espacios de nombre. Habrán ocasiones en las que ambas clases sean utilizadas en un mismo script. Para eso tenemos dos opciones, la primera sería importar ambos espacios de nombres como mostramos anteriormente, y la segunda opción sería mediante un alias, que nos permite identificar a cada una de las clases como se muestra a continuación:

<?php
use MiEmpresa\Blog\Usuario as UsuarioBlog;
use MiEmpresa\CMS\Usuario as UsuarioCMS;
 
$usuario1 = new UsuarioBlog();
$usuario2 = new UsuarioCMS();

Constantes de clase
A partir de la versión 5.3 de PHP, las constantes pueden ser definidas a nivel de clase; es decir, pueden ser accesadas sin necesidad de instanciar un objeto de la clase. Es importante notar que las constantes están disponibles cuando se importan los espacios de nombre, pero no pueden ser importadas directamente. En el ejemplo siguiente se muestra más claramente:

<?php
namespace MiEmpresa;
 
class Blog {
  const VERSION = '1.0';
}
 
echo MiEmpresa\Blog::VERSION; // CORRECTO: imprimirá el valor 1.0
 
use MiEmpresa\Blog;
echo Blog::VERSION; // CORRECTO: imprimirá 1.0
 
use MiEmpresa\Blog::VERSION as VersionBlog;
echo VersionBlog; // INCORRECTO: no imprimirá el valor esperado

Funciones en espacios de nombre
El uso de métodos estáticos en clases ha ocasionado que las funciones sean algo del pasado. Sin embargo, si por alguna razón necesitaras hacer uso de una función en tu código, estas también serán afectadas por el espacio de nombre. Por ejemplo:

<?php
namespace Funciones;
function imprimir() { ... }
 
imprimir(); // Para llamarla dentro del mismo espacio de nombres no hay que hacer nada en especial
 
<?php
require 'funciones.php';
Funciones\imprimir(); // Para llamarla desde otro lugar sí es necesario especificar el espacio de nombres.

Hasta aquí llegamos con este análisis de las nuevas características de la versión 5.3 de PHP. En una siguiente entrega analizaremos las otras mejoras.