Utilizando la API de Twitter con PHP

24 01 2008

Twitter se ha convertido de una novedad y los desarrolladores estamos bastante interesados en proveer en nuestros proyectos, soporte a herramientas de actualidad, para salir de la monotonía del desarrollo web. Navegando en busca de material para la redacción de un artículo relacionado, me toque con una excelente clase para hacernos la vida más sencilla a la hora de trabajar con la API de Twitter. Y es que hacerlo vía CURL es un tanto engorroso. Al final, la clase en cuestión hace el mismo uso de CURL, solo que con métodos más sencillos: viva la abstracción…!

Obteniendo la clase: la clase está disponible para su descarga desde el grupo de desarrollo en Google Code: Twitter Development Talks API Class. La clase está desarrollada en lenguaje PHP.

Utilizando el objeto Twitter: dentro del mismo archivo se encuentra el ejemplo. Basicamente los únicos datos requeridos son los datos del usuario.

$twitter = new Twitter(“username”, “password”);
$public_timeline_xml = $twitter->getPublicTimeline(“xml”);

El listado de las funciones es:

getPublicTimeline($format [, $since_id])
getFriendsTimeline($format [, $id [, $since ]])
getUserTimeline($format [, $id [, $count [, $since ]]])
showStatus($format, $id)
updateStatus($status)
destroyStatus($format, $id)
getReplies($format [, $page ])
getFriends($format [, $id ])
getFollowers($format [, $lite ])
getFeatured($format)
showUser($format [, $id [, $email ]])
getMessages($format [, $since [, $since_id [, $page ]]])
getSentMessages($format [, $since [, $since_id [, $page ]]])
newMessage($format, $user, $text)
destroyMessage($format, $id)
createFriendship($format, $id)
destroyFriendship($format, $id)
verifyCredentials([$format])
endSession()
getArchive($format [, $page ])
getFavorites($format [, $id [, $page ]])
createFavorite($format, $id)
destroyFavorite($format, $id)
lastStatusCode()
lastAPICall()

En lo personal, la clase me agrada mucho y si la usaré por que veo que realmente funciona muy bien. Lo único que podría proponer al equipo es que el parámetro requerido FORMAT pueda ser una propiedad y no un parámetro obligatorio para casi todas las funciones por que muchos de nosotros utilizaremos un solo tipo de formato; ya sea XML o JSON pero muy pocos, utilizarán ambos.





Instalando Perl sobre Apache en Ubuntu

10 12 2007

Perl es un lenguaje multiproposito. De el vienen deribados varios lenguajes de programación como PHP. Hace algunos días me entro la curiosidad de probar como instalarlo en la computadora de mi oficina en Ubuntu 7.10. Debo reconocer que el procedimiento me llevó más de lo que espere. Pero ahora comparto con ustedes el procedimiento y los animo a probar este nuevo lenguaje.

Paso 1: Instalamos MOD_PERL: luego de instalar Apache instalamos MOD_PERL. Este es un módulo que nos nos proporcionará la conexión del lenguaje con el servidor Apache. Así, no tendremos que hacer mayores cambios. Como siempre en distribuciones Linux basadas en Debian es más sencillo instalar este tipo de cosas, utilizando Aptitude / Synaptic

$ sudo apt-get install libapache2-mod-perl2

El anterior procedimiento no resulto tan complicado. Bueno, con esto lo que hacemos es instalar el modulo para Apache. Pero con esto no basta. Recordemos que PERL viene por defecto instalado sobre Linux y al instalarlo en Apache utilizamos CGI (Common Gateway Interface) que viene deshabilitado por defecto.

Paso 2: Agregamos el HANDLED adecuado: . Posteriormente editamos nuestro archivo de configuración de Apache, agregamos las siguientes lineas y reiniciamos el servidor.

$ gedit /etc/apache2/apache2.conf

# Agregamos las siguientes líneas al final del archivo

AddHandler cgi-script .cgi
<Files ~ “\.pl$”>
    Options +ExecCGI
</Files>
<Files ~ “\.cgi$”>
    Options +ExecCGI
</Files>

# Reiniciamos el Servidor
$ /etc/apache2/apache2 restart

Y con solo esto ya tenemos instalado el soporte de Perl sobre Apache. Lo bueno de estos metodos de instalación es que podemos instalar mutliples tecnologías en el mismo servidor. Bueno, en mi caso ha sido para poder probar Movable Type, pero eso es tema de otro articulo.

Artículos Relacionados:





LAMP: Montando mi Servidor en Ubuntu

23 10 2007

Al fin puedo decir que soy un usuario de Linux Ubuntu. Ahora que Ubuntu se actualizó a la versión 7.10 Gutsy Gibbon no lo pense dos veces y le instalé el mismo día de su publicación. Para los programadores acostumbrados a Windows el cambio puede ser un tanto dificil; en especial por que hay que volver a empezar a configurar nuestro servidor de pruebas Apache con PHP y MySQL. Por suerte me encontré con una guía fantástica (eso si, en idioma inglés), que me atrevo a traducir, en parte, para ayuda de todos los que se plantean pasarse a la plataforma.

Instalando Apache:

sudo apt-get install apache2

Nos pedirá nuestra contraseña para autenticar. Por cierto, las instrucciones están para Ubuntu y sistemas basados en Debian. En otras distribuciones, el método es distinto. Luego vamos al explorador en http://localhost/

Instalando PHP:

La ventaja principal de los repositorios es que las aplicaciones ya están pre-compiladas, con lo cual nos ahorramos mucho tiempo y evitamos tener que conseguir todas las dependencias. Eso me pone a pensar que para desarrollar en Linux e instalar nuevas herramientas, es necesario contar con una conexión a Internet. Bien, ahora que tenemos Apache ya instalado, procedemos con PHP.

# Instalamos PHP 5
sudo apt-get install php5

# Instalamos el conector de PHP para Apache 2
sudo apt-get install libapache2-mod-php5

# Reiniciamos el Servidor
sudo /etc/init.d/apache2 restart

Con esto ya tenemos vinculado Apache con PHP. Nuestra carpeta DocumentRoot es /var/www/. Para probar creamos un archivo de prueba e incluimos la función <?php phpinfo(); ?>. Ahora, si el servidor nos mostrase el cuadro de dialogo Guardar Archivo, procedemos a forzar el reinicio de Apache.

sudo a2enmod php5
sudo /etc/init.d/apache2 force-reload

 

# Instalamos módulos adicionales

# PEAR
sudo apt-get install php-pear

# GD
sudo apt-get install php5-gd

# XSL
sudo apt-get install php5-xsl

# CURL

sudo apt-get install curl libcurl3 libcurl3-dev php5-curl

# PostFix: soporte para la función mail()
sudo apt-get install postfix

# Reiniciamos el Servidor
sudo /etc/init.d/apache2 restart

Instalando MySQL:

La instalación de MySQL tambián viene a ser muy sencilla. La variante con respecto a la instalación en Windows es que en Linux, debemos instalar el soporte dentro de Apache y dentro de PHP.

# Para Apache (requerido para instalar en PHP)
sudo apt-get install libapache2-mod-auth-mysql

# Podemos definir la version 4 o 5 de PHP
sudo apt-get install php<version-number>-mysql
sudo apt-get install phpmyadmin

Ahora, editamos el archivo de configuración de PHP ubicado en /etc/php<version>/apache2/php.ini y agregamos:

extension=mysql.so

Lo bueno de esto es que se parece mucho al modo en Windows, por lo que cuando instalemos nuevas extensiones, podemos agregarlas al PHP.ini sin necesidad de recompilar.

Ahora, volvemos a reiniciar el Servidor de Apache. Y terminamos por instalar el Servidor de MySQL.

# Colocamos la contraseña de ROOT
sudo mysqladmin password <NEWPASSWORD>>

sudo apt-get install mysql-server

Y con esto ya tenemos instalado Apache, PHP y MySQL en Linux Ubuntu. Podemos reiniciar nuestro computador y cada vez que iniciemos, los servicios de Apache y MySQL se iniciaran automaticamente. Para probar la conexió de PHP con MySQL, podemos volver al archivo de prueba de creamos. Debemos ver el apartado de mysql.

Artículos Relacionados:





Clases en PHP

14 08 2007

Las clases en PHP, se definen mediante la instrucción class, existe el concepto de herencia, mediante la partícula extends. Versiones anteriores a PHP 5, no mplementaban realmente el concepto de clase como tal. Más bien lo que se hacía era tratar a una clase como una mera coleccion de funciones interelacionadas. Ya en PHP 5 hay un nuevo modelo de Objetos. El manejo de PHP de objetos ha sido reescrito por completo, permitiendo un mejor desempeño y mas características.

<?php

class A
{
    function foo()
    {
        if (isset($this)) {
            echo ‘$this is defined (‘;
            echo get_class($this);
            echo ")\n";
        } else {
            echo "\$this is not defined.\n";
        }
    }
}

$a = new A();
$a->foo();
A::foo();

?>

Una seudo variable $this está disponible cuando un método es llamado dentro del contexto de un objeto. Para crear un nuevo objeto, se iguala a una variable y se utiliza la palabra reservada new, seguida del nombre de la clase.

En PHP, también se pueden definir métodos constructores (__construct) y destructores (__destruct) para las instancias de las clases; pero los constructores de clases padre, no son llamados automáticamente, por lo que se deberá indicar en el cuerpo de la clase heredera. Un objeto, puede ser clonado (o dicho de otro modo, puede crearse un apuntador), a través del prefijo (&).

El método __autoload, es llamado automáticamente en caso de que intente usar una clase que no ha sido definida aún, o que se necesiten definir otros parámetros de inicio.

En PHP 5, las propiedades y métodos pueden ser definidos como publicos (public), privados (private) o protegidos (protected). La palabra reservada static, permite definir miembros estáticos dentro de la clase (tanto variables como funciones). Un miembro estático es aquel que aunque está dentro de una clase, no puede ser utilizado directamente como miembro de la tal, sino referenciado sin que haya necesidad de crear un objeto de la clase. Una propiedad o método estático puede referenciar a otros dentro de la clase con el prefijo self::miembro. También puede definirse constantes, dentro de la clase, e igualmente pueden ser accedidas a través de ‘self::’.

Actualmente, la sobrecarga de funciones, no está definida como tal en PHP. Existen diferentes métodos para lograr “emularla”, pero no existe un método concreto, incluido directamente en el intérprete de PHP.





PHP: Definición de Funciones

7 08 2007

Las funciones en PHP se definen con la sintáxis function. Las funciones se llaman sin ningún prefijo, pero puede llamarse a las funciones de manera dinámica al igual que la variables, con el prefijo dolar ($). En PHP3, las funciones deben definirse antes de que se referencien. En PHP4 no existe tal requerimiento, excepto cuando una función es definida condicionalmente. Cuando una función es definida condicionalmente su definición debe ser procesada antes que sea llamada.

<?php

$makefoo = true;

/* We can’t call foo() from here
   since it doesn’t exist yet,
   but we can call bar() */

bar();

if ($makefoo) {
    function foo ()
    {
        echo "I don’t exist until program execution reaches me.\n";
    }
}

/* Now we can safely call foo()
   since $makefoo evaluated to true */

if ($makefoo) foo();

function bar()
{
   echo "I exist immediately upon program start.\n";
}

# Funciones dentro de funciones
function foo()
{
    function bar()
    {
        echo "I don’t exist until foo() is called.\n";
    }
}

/* We can’t call bar() yet
   since it doesn’t exist. */

foo();

/* Now we can call bar(),
   foo()’s processesing has
   made it accessible. */

bar();

?>

PHP no soporta la redefinición de funciones previamente declaradas. Los nombres de funciones se pueden llamar con mayusculas o minusculas, aunque es una buena costumbre el llamar a las funciones tal y como aparecen en su definición.

function foo($a, $b, $c = NULL) {
    Instrucciones

    return false;     # Devuelve el valor desde la función
}

foo(1, 2);

En PHP, existe el concepto de parámetros por defecto, que indica que si un parámetro no es enviado dentro de la llamada a la función, puede tomar un valor por defecto y no causará ningún error en tiempo de ejecución. Los parámetros por defecto, deben ir al final de la lista de parámetros de la función.

Artículos Relacionados





Estructuras de Control en PHP

3 08 2007

PHP es un lenguaje basado en Perl, con una sintáxis muy parecida a la de C/C++ o Java. Una de las partes importantes de cualquier lenguaje son las estructuras de control. A continuación, se muestra un ejemplo de cada una de las estructuras de control que se manejan en PHP.

# PHP: If
if ($a == $b) {
    Instrucciones
} elseif ($a > $b) {
    Instrucciones
} else ($a < $b) {
    Instrucciones
}

# PHP: Operador ternario (aplicación especial del If)
$a = ($b > 10) ? true : false;

# PHP: Switch
switch ($var1) {
case 0:
    Instrucciones
    break;
case 1:
    Instrucciones
    break;
default:
    Instrucciones
    break;
}

El operador ternario es utilizado como un método abreviado de asignación de variables, en donde se debe comparar un valor para determinar el valor que tomará una variable. Este está dividido por la expresión a evaluar, el signo de interrogación (?), el valor que tomará de ser verdadera la expresión, dos puntos (:) y el valor si la expresión es falsa.

# PHP: For
for ($i = 0; $i < 10; $i++) {
    Instrucciones
}

# PHP: While
while ($var1 != false) {
    Instrucciones
}

# PHP: Do..While
do {
    Instrucciones
} while ($var2 === true);

La estructura de control Do..While tiene la funcionabilidad de que el ciclo se realice por lo menos una vez, y despues evaluar la expresión de salida. Tiene la misma funcionabilidad que la senticia Repeat, en lenguaje Pascal.

Ahora, existe una cuarta estructura de bucles llamada Foreach, que en PHP, nos sirve para recorrer mucho mas facilmente los elementos de un arreglo. La sintaxis, indica que las filas o registros se van recorriendo de uno en uno, y el valor de cada uno, se almacena en una variable.

# PHP: Foreach
foreach ($foo as $bar) {
    echo $bar . "<br />";
}

En el ejemplo, la variable $foo es el arreglo y $bar, la variable que recibe el valor de cada una de las filas recorridas.

En PHP, existen muchas más estructuras de control, y además, existen métodos abreviados para utilizar las ya mencionadas. La sintáxis y explicación se tratará en futuros capítulos del curso.

Artículos Relacionados





PHP: Sintáxis de Operadores

1 08 2007

Al igual que los ya conocidos operadores utilizados por todos los lenguajes de programación; existen unos propios de PHP, que permiten hacer las mismas operaciones, pero de una manera más abreviada. Hemos de aprenderlo, por que muchas veces su utilización nos permite programar de una mejor manera, con un estilo más elegante de codificación.

# Negación de la variable
-$a;

# Módulo
$a % $b;

El operador básico igual (=), no debería tomarse como “es igual a”. Lo que indica es que el operando de la izquierda recibe el valor de la expresión de la derecha.

# $a es igual a 9 ahora, y $b ha sido definido a 4.
$a = ($b = 4) + 5;

$a  = 3;

# define $a como 8, como si hubiesemos dicho: $a = $a + 5;
$a += 5;

# define $b como"¡Hola a todos!", tal como $b = $b . "a todos!";
$b  = "¡Hola";
$b .= "a todos!";

Una parte importante, son los operadores de comparación. Los nuevos operadores (además de los clásicos operadores: igual (==), diferente (!= ó ), mayor (>), menor (=) y menor o igual (<=) ) son

# Igual en valor y en tipo de dato
$a === $b;

# Diferente en valor o en tipo de dato
$a !== $b;

PHP, permite una rutina de control para errores, que utiliza como prefijo el caracter de arroba (@), dentro del contenido de la expresión a evaluar. Esto provocará que cualquier error generado por la expresión no provocará un mensaje de error. Y si, la directiva track_errors esta activada, el mensaje de error generado por la expresión será almacenado en la variable $php_errormsg.

PHP soporta un operador de ejecución: las comillas invertidas (` `). PHP intentará ejecutar el contenido entre las comillas como si se tratara de un comando del intérprete de comandos; su salida será devuelta (es decir, no será simplemente volcada como salida) y puede ser asignada a una variable.

# Ejemplo de operador de ejecución
$a = `ls -al`;

# Ejemplos de operadores lógicos
# And
$a and $b;
$a && $b

# Or
$a or $b;
$a || $b;

# Xor: Or exclusivo
$a xor $b;

# Negación
! $a;

# Ejemplo de Operador de Tip
if ($a instanceof Class)

La diferencia entre los operadores lógicos and y or es sobre la base de precedencia. El operador de tipo es usado para determinar si un objeto dado, sus padres o sus implementaciones de interfaces son de una clase de objeto especificada. El operador instanceof fue introducido en PHP 5. Antes de esta versión, is_a() era utilizado, pero is_a() ha sido marcado como obsoleto desde entonces en favor de instanceof.

Artículos Relacionados