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.





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





PHP: Manejo de Variables

31 07 2007

PHP es un excelente lenguaje de scripting. El manejo de las variables en PHP es muy sencillo y sobre todo dinámico. Muchos programadores experimentados, sobre todo en programación en lenguaje C/C++, consideran que las variables en PHP, realmente se manejan como estructuras de listas, en especial los tipo Array, o vectores.

Manejo de Variables en Lenguaje PHP: las variables se distinguen en que tienen como caracter de identificación el signo de dólar ($), en PHP, las nombres de las variables son case-sensitive (es decir, que una variable llamada foo es tratada como distinta a una llamada Foo). Otras reglas son que no se admiten espacios ni caracteres especiales y el primer caracter debe ser una letra, aceptando los subsiguientes en combinación con letras o el caracter de guión mayor (_).

Y una de las mayores ventajas que encuentro en el manejo de variables en PHP es que, se puede imprimir el valor de variables dinámicamente.

<?php
# $a vale 25
$a = 25;

# $b vale "a" (igual al nombre de la variable $a)
$b = "a";

echo $a; # Imprime 25
echo $b; # Imprime a

echo $$b; # Imprime 25
?>

Como podemos observar, la combinación ($$), le indica al intérprete de PHP, que busque una variable llamada igual al valor que tiene la variable indicada.

Manejo de Arreglos en PHP: los arreglos en PHP, se manejan de manera muy distinta a la de otros lenguajes. Como se había mencionado anteriormente, mucho piensan que los arreglos en PHP, realmente son listas encadenadas de datos. Los arreglos en PHP tienen varias características:

  • Se manejan con llaves numérícas o alfanuméricas.
  • Son de longitud variables. Es decir que una fila puede contener 3 registros y otra puede contener 5.
  • Pueden almacenar diferentes tipos de valores en cada llave. Por ejemplo la primera columna puede almacenar una cadena y la segunda un número.

Esto sin duda, es de gran beneficio para muchos desarrolladores por que evita que se deba definir varios arreglos de datos para almacenar distintos tipos de datos relacionados.

Validación y Comparación entre diferentes tipos de datos en PHP: una tercera ventaja a destacar en el manejo de variables en PHP, es que no existe el concepto de tipo de dato convensional como en otros lenguajes. Por ejemplo, es posible comparar un valor de tipo alfanumérico con uno numeríco o uno numerico con un valor booleano. El intérprete de PHP, hace las conversiones entre tipos de forma automática por lo cual, no debemos utilizar funciones adicionales para convertir valores a otros tipos de datos.

<?php
# Manejo de objetos tipo Array
$foo      = array(0 => "apple", 1 => "pear", 2 => "peach");
$foo[3]   = "watermelon";
$foo["4"] = "strawberry";

# Imprime todos los valores del arreglo
print_r($foo);
?>

 

<?php
$a = "25";
$b = 9;

echo ($a + $b);      # Imprime 34

var_dump ($a == 25); # Imprime TRUE

$b = $a++;           # $b valdría 50

# Ejemplo de definición de una constante
define("PHP_CONST", 3.14159);
?>

Y no podemos olvidar el uso de constantes, que en PHP, se definen mediante la función define, donde debemos definir el nombre de la constante y su valor, que puede ser numérico, alfanumérico o booleano. Esta función no acepta arreglos como constantes. Las constantes en PHP, se referencian sin el símbolo de dolar como prefijo.

Artículos Relacionados








Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.