__construct: se utiliza para la construcción de objetos, logicamente este si es conocido si te has informado sobre las novedades de PHP5 referente a objetos.
__toString: controla lo que devuelve el objeto cuando se transforma en una cadena de texto, por ejemplo cuando hacemos un echo. Puede sernos muy util sobre todo para las trazas.
__clone: muy usado en Java, nos permite controlar la clonación de un objeto. Aunque no lo parezca, puede ser muy útil.
__set_state: devuelve la llamada a la función var_export(), asà cuando queremos exportar un objeto, devolvemos el código PHP válido que deseamos. En esta es en la función que más se detiene el autor del artÃculo y merece la pena echarle un vistazo a fondo.
Cuando aprendemos un lenguaje (en este caso PHP) de forma autodidacta o parcialmente (un curso en la empresa), hay veces que usamos lo que conocemos porque con eso nos basta, pero no profundizamos más y nos encontramos con que hay cosas que desconocemos y que nos serÃan de utilidad. Por eso, el artÃculo que paso a traducir, nos puede ser de gran ayuda.
Usa ip2long() y long2ip() para guardar/recuperar las direcciones IP en la base de datos en vez de un string. Un string de 15 posiciones ocupa más espacio, cuanto menos llenemos la BD mejor que mejor.
Valida parcialmente la dirección de email con la función checkdnsrr(). Esta función comprueba que el dominio se corresponde a una dirección IP, asà evitamos que se hayan enviado direcciones de correo con servidores erróneos. En el caso de que la validación de la existencia del email sea necesario.
Si usas PHP5 utiliza las funciones para acceso a MySQL mysqli_* en lugar de mysql_*, ya que están optimizadas.
Aprende lo que te ofrece el operador ternario (?:), te facilitará mucho el desarrollo y la comprensión del código una vez creado.
No reinventes la rueda, antes de meterte a hacer lo que ya está hecho, mira si existe en las librerÃas PEAR.
Usa highlight_file() cuando quieras formatear un texto como código PHP.
Deshabilita los logs de errores con error_reporting(0), a parte de ganar en rendimiento, evitas mostrar querys o paths de scripts. Yo personalmente recomendarÃa que te crearas un buen gestor de errores.
Usa gzcompress() y gzuncompress() para comprimir strings grandes para que no ocupen demasiado tamaño en la BD, por ejemplo en un campo BLOB.
Usa parámetros por referencia (&$param) para poder conseguir que la función te devuelva más valores a parte de que devuelve return.
Intenta comprender completamente las “magic quotes” para evitar que te ataquen mediante SQL Injection.
Drake es un módulo de Drupal que nos permite ejecutar aplicaciones realizadas con CakePHP, se trata de un puente entre ambos.
Drupal es uno de los mejores CMS en PHP, pero que dispone de un pequeño framework, mientras que CakePHP es uno de los mejores frameworks de PHP pero que no dispone de gran funcionalidad como CMS. Por ello nace Drake, que se encarga de unirlos para conseguir desarrollar mejores aplicaciones.
Drake solo admite Drupal 5 debido a que serÃa costoso dar soporte a versiones de Drupal 4 y Drupal 5, ya que el API de Drupal 5 es bastante diferente al de la versión 4. La instalación parece muy sencilla, por lo que no creo que presente muchas dificultades su uso. Drake
VÃa / PHPDeveloper.org
Muy buen tutorial que nos explica como combinar PHP y Flex usando el Zend Framework para crear aplicaciones más completas.
En el ejemplo usarán PHP (mediante el Zend Framework) para llevar la lógica de la aplicación, mientras que Flex se usará para la presentación. Se trata de leer los feeds de DevZone y añadir imágenes de Flickr para cada entrada. Lo primero será pasar el contenido de cada entrada por el Content Analyzer de Yahoo, el cual nos devolverá las palabras clave. Con estas etiquetas accederemos a Flickr y mostraremos la imágen.
Aunque en este caso se usa el Zend Framework, está claro que se puede hacer con otro framework o directamente desarrollando nosotros todo el código.
En Zend Developer Zone cada dÃa nos sorprenden con algo nuevo. Flex and PHP: Party in the Front, Business in the Back
Resumen de algunas variables que podemos obtener del servidor y que nos pueden ayudar en nuestras aplicaciones:
$_SERVER[‘REQUEST_URI’]: devuelve la URL con la que se accede al script que se está ejecutando. Devolvería algo así como /script.php?param1=val1¶m2=val2.
$_SERVER[‘DOCUMENT_ROOT’]: devuelve el directorio raíz del servidor web, algo así como /usr/tusitio/www.
$_SERVER[‘HTTP_HOST’]: devuelve el nombre del dominio (por ejemplo, sentidoweb.com). Esto puede ser muy útil cuando se quieren usar paths absolutos en vez de relativos y queremos que funcione la aplicación en el servidor de desarrollo y en el de real.
$_SERVER[‘HTTP_USER_AGENT’]: nos devuelve información del navegador, cuál es y en qué sistema operativo se ejecuta. Útil si tenemos que hacer algún apaño por incompatibilidad de navegadores, para llevar tema de estadísticas o por ejemplo para devolver un archivo para descarga dependiente de S.O.
$_SERVER[‘PHP_SELF’]: devuelve el nombre del fichero que se está ejecutando.
$_SERVER[‘QUERY_STRING’]: devuelve la lista de parámetros que se pasan por URL (lo que sigue después de la interrogación).
$_SERVER[‘REMOTE_ADDR’]: devuelve la dirección IP de la máquina que está accediendo al script.
$_SERVER[‘SCRIPT_FILENAME’]: devuelve el path absoluto del script que se está ejecutando.
PHP-Ext es una librería open source que nos permite potenciar la capa UI de Javascript en nuestras aplicaciones. Para ello nos ofrece una serie de librerías (compatibles con PHP 4 y 5) para integrar Ext JS en nuestro sistema. Funciona como un mapeado en clases de la librería JS.
Entre las posibilidades que ofrece nos encontramos con la creación de formularios, combos, grids o menus. A parte ayuda a la comunicación entre el cliente y el servidor mediante JSON y XML.
Para mí, uno de los mayores fracasos de Twitter es su API, una limitación de su uso increíble para algo que le podría dar mucho juego a la aplicación. Ahora mismo no sé en cuánto está el límite, pero la posibilidad de realizar una aplicación basada en Twitter es una pesadilla.
Para aquellos que no quieran sufrir lo que hemos sufrido con TwitterPoster (los espacios en blanco es porque la gente actualiza su imagen y no podemos recuperar la de todos los usuarios por el límite en el API de Twitter), les recomiendo usar Twitter mediante CURL.
Os paso un script sencillito que he realizado:
<?php
// Primer hacemos login
$url ="https://twitter.com/sessions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
// Por si tienen limitación por navegador
curl_setopt($ch, curlOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)");
// Poned una ruta para las cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, '/temp/');
curl_setopt ($ch, CURLOPT_COOKIEFILE, '/temp/');
curl_setopt ($ch, CURLOPT_POSTFIELDS, "username_or_email=[usuario]&password=[contraseña]");
// Para que funcione el https
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, curlOPT_SSL_VERIFYHOST, 2);
curl_exec ($ch);
// Cargamos el home, porque Twitter añade dos campos ocultos para poder publicar por web
$url ="http://twitter.com/home";
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec ($ch);
// Recuperamos los campos ocultos
preg_match('//', $result, $match);
$authenticity_token = $match[1];
preg_match('//', $result, $match);
$siv = $match[1];
// Insertamos el texto
$res = $url ="http://twitter.com/status/update";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'siv='.$siv.'&authenticity_token='.$auth.'&status=[texto]');
curl_exec ($ch);
curl_close ($ch);
unset($ch);
?>
¿Qué fallo tiene este script? pues que si cambian el HTML (campos de formulario, …) o las URLs deja de funcionar, pero al menos no tenemos limitaciones. Eso sí, es más costoso para sus servidores y para los nuestros, porque en vez de hacer una llamada, hacemos 3, y en nuestro caso, a parte parseamos una página para obtener dos campos ocultos.