Ads 468x60px

Perfil

domingo, 28 de abril de 2013

phpDocumentor – organiza tu documentaciĂłn PHP y expĂłrtala a HTML

php documentorExisten algunas herramientas que permiten generar documentación de forma automática a partir del código fuente. Javadoc es la herramienta estándar en Java. Para PHP una de las herramientas más utilizadas es phpDocumentor.
La documentación de un proyecto de software es tan importante como su código. Una buena documentación nos facilita en gran medida el mantenimiento futuro de la aplicación. Si además estamos trabajando en equipo es muy útil saber lo que hacen las partes que desarrollan otras personas, sobretodo si tenemos que utilizarlas en nuestra parte.
Para ayudarnos existe la aplicación PhpDocumentor, que nos permite generar automáticamente una buena documentación de nuestro código, de una forma parecida a como lo hace JavaDoc. Mediante comentarios y unas etiquetas especiales podemos definir de forma sencilla que hace cada clase, cada método y cada función de nuestro código.

Los elementos que pueden ser documentados son:
  • define
  • function
  • class
  • class vars
  • include/require/include_once/require_once
  • global variables


Además se puede incluir documentación global a nivel de fichero y clase mediante la marca @package

DocumentaciĂłn para classes y archivos

Marca Significado
@access Si @access es ‘private’ no se genera documentaciĂłn para el elemento (a menos que se indique explĂ­citamente). Muy interesante si sĂłlo se desea generar documentaciĂłn sobre la interfaz (mĂ©todos pĂşblicos) pero no sobre la implementaciĂłn (mĂ©todos privados).
@author Autor del cĂłdigo
@copyright InformaciĂłn sobre derechos
@deprecated Para indicar que el elemento no deberĂ­a utilizarse, ya que en futuras versiones podrĂ­a no estar disponible.
@example Permite especificar la ruta hasta un fichero con cĂłdigo PHP. phpDocumentor se encarga de mostrar el cĂłdigo resaltado (syntax-highlighted).
@ignore Evita que phpDocumentor documente un determinado elemento.
@internal
inline {@internal}}
Para incluir informaciĂłn que no deberĂ­a aparecer en la documentaciĂłn pĂşblica, pero sĂ­ puede estar disponible como documentaciĂłn interna para desarrolladores.
@link
inline {@link}
Para incluir un enlace (http://…) a un determinado recurso.
@see Se utiliza para crear enlaces internos (enlaces a la documentaciĂłn de un elemento).
@since Permite indicar que el elemento está disponible desde una determinada versión del paquete o distribución.
@version VersiĂłn actual del elemento
Dejo aquĂ­ un ejemplo

Documentación para funciones y métodos

Marca Significado
@global Permite especificar el uso de variables globales dentro de la funciĂłn.
@param Parámetros que recibe la función. Formato:
* @param tipo $nombre_var comentario
@return Valor devuelto por la funciĂłn. Formato:
* @return tipo comentario
Ejemplo :
Para terminar este post decir que mi IDE favorito PHPDesigner está perfectamente integrado con PHPDocumentor tanto para documentar como para compilar la documentación. Esta es una de las razones por las que es mi IDE favorito.

sábado, 27 de abril de 2013

Generar archivos PDF dinámicamente con PHP

pdf logoLos documentos PDF han demostrado ser un medio muy importante dentro de la ofimática actual. Crear, administrar y exportar archivos PDF suele ser un requerimiento esencial dentro de cualquier proyecto web. Necesitamos una herramienta para
  1. Insertar imágenes y gráficas.
  2. Establecer la fuente del PDF.
  3. Tener dinámicamente control sobre el diseño del mismo.
  4. Realizar una maquetaciĂłn decente para esta clase de documentos es esencial.
De nuestra habilidad para crear estos documentos dependerá la calidad del archivo finalmente exportado. Es por esto que desde este blog os quiero presentar mi herramienta preferida la clase FPDF de PHP.
FPDF es una clase escrita en PHP que permite generar documentos PDF directamente desde PHP, es decir, sin usar la biblioteca PDFlib. La F de FPDF significa Free (gratis y libre): puede usted usarla para cualquier propĂłsito y modificarla a su gusto para satisfacer sus necesidades.
La clase genera documentos en muchos otros idiomas aparte de los europeos occidentales: europeo central, ciríloco, griego, báltico y tailandés, si se dispone de fuentes TrueType o Type1 con el conjunto de caracteres adecuado. El chino y el japonés también están admitidos. UTF-8 también está disponible.
Como es lĂłgico, la velocidad de generaciĂłn de un documento es menor que con PDFlib. Sin embargo, la desventaja en cuanto a rendimiento es muy razonable y se adecĂşa a la mayorĂ­a de los casos, a no ser que sus documentos vayan a ser especialmente complejos o extensos.
He aquí un ejemplo de uso de la clase simple. El desarrollador tiene en su página muchos más ejemplos más aparte de documentación: http://www.fpdf.org/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
require('fpdf.php');
class PDF extends FPDF
{
//Cabecera de página
function Header()
{
    //Logo
    $this->Image('logo_pb.png',10,8,33);
    //Arial bold 15
    $this->SetFont('Arial','B',15);
    //Movernos a la derecha
    $this->Cell(80);
    //TĂ­tulo
    $this->Cell(30,10,'Title',1,0,'C');
    //Salto de lĂ­nea
    $this->Ln(20);
}
//Pie de página
function Footer()
{
    //PosiciĂłn: a 1,5 cm del final
    $this->SetY(-15);
    //Arial italic 8
    $this->SetFont('Arial','I',8);
    //NĂşmero de página
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
//CreaciĂłn del objeto de la clase heredada
$pdf=new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=40;$i++)     $pdf->Cell(0,10,'Imprimiendo lĂ­nea nĂşmero '.$i,0,1);
$pdf->Output();

viernes, 26 de abril de 2013

PHPMailer I – gestiona todos los correos de tu site con esta librerĂ­a



Es posible enviar email con la funcion mail() de php, pero dicha función no permite algunas de las más populares características que proporcionan los clientes de correo usados actualmente. PHPMailer hace fácil la difícil tarea de enviar correos con características especiales y puedes incluso utilizar tu propio servidor smtp aunque éste requiera autenticación (un nombre de usuario y contraseña), con lo que se podrá usar una cuenta gratuita de correo que permita este tipo de conexión.
CaracterĂ­sticas principales:
  • Capacidad de uso de uno o varios servidores SMTP externos
  • Uso de html en el envĂ­o
  • Adjuntar imágenes y/o archivos en el mail
  • Embeber imágenes dentro del correo electrĂłnico
  • Buena descripciĂłn de errores
Descargas:
http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php4/0.90/
Ejemplos de uso:
http://phpmailer.worxware.com/index.php?pg=examples
Página de los desarrolladores:
http://phpmailer.worxware.com/

jueves, 25 de abril de 2013

Patrones de Diseño II – Singleton en PHP

Una breve entrada para describir el patrón de diseño denominado Singleton y para contaros cómo podríamos implementarlo en PHP.
IntenciĂłn del patrĂłn

Garantiza que una clase sĂłlo tenga una instancia y proporciona un punto de acceso global a ella.
Problema a resolver

Varios clientes distintos precisan referenciar a un mismo elemento y queremos asegurarnos de que no hay más de una instancia de ese elemento.
SoluciĂłn -> Singleton

Garantizaremos una Ăşnica instancia.

¿CĂłmo obtengo una instancia de la clase y cĂłmo uso sus mĂ©todos?
.

miércoles, 24 de abril de 2013

Patrones de Diseño I : introducción

1.- ¿QuĂ© son los patrones de diseño?

Voy a hacer un copy-paste de la wikipedia porque creo que yo mismo no encontraré mejores palabras para definirlo :
“Los patrones de diseño son la base para la bĂşsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacciĂłn o interfaces.
Un patrĂłn de diseño es una soluciĂłn a un problema de diseño. Para que una soluciĂłn sea considerada un patrĂłn debe poseer ciertas caracterĂ­sticas. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.”
2.- ¿Para que sirven los patrones de diseño?
Seguro que casi todos vosotros habĂ©is usado el MVC (Modelo Vista Controlador) en más de una ocasiĂłn usando algĂşn Framework o librerĂ­a. ¿Os habĂ©is dado cuenta de los fácil que es programar con este mĂ©todo una web? ¿HabĂ©is observado lo lĂ­mpio que queda el cĂłdigo y lo rápido que se programa? Pues bien el MVC no es más que un patrĂłn de diseño que se adapta perfectamente a la programaciĂłn web.
En general los objetivos de cualquier patrón de diseño los podemos resumir en los siguientes puntos:
  1. Aportar elementos reutilizables en el diseño de sistemas software.
  2. Evitar la repeticiĂłn de bĂşsqueda de soluciones a problemas ya conocidos y ya solucionados anteriormente.
  3. Definir un vocabulario comĂşn entre Analistas-Programadores.
  4. Estandarizar el modo en que se realiza el Análisis estructural de la aplicación.
  5. Facilitar el aprendizaje de las nuevas generaciones de programadores condensando conocimiento ya existente.
3.-  ¿Que importancia tienen?
Saber de patrones de diseño te ayuda a tener un lenguaje común con otros programadores. Cuando te toque modificar un programa, el autor del código seguramente tendrá que explicarte qué fue lo que hizo, cómo funciona su código y por qué hizo cualquier cambio. Se puede demorar horas. Pero esa conversación puede acortarse si te dice, aquí estoy utilizando tal o cual patrón (por ejemplo: el patrón Factory). Serás tú el que ya conozcas los conceptos detrás de esa palabra y sabrás cómo fue diseñado el programa.