HTMLpointHTMLpoint HTMLpoint.com


 Las extensiones



En los capítulos anteriores hemos visto las principales funciones referidas al lenguaje para la creación de nuestras páginas dinámicas. La diferencia entre esas funciones y la familia de las que veremos a continuación es esencial. Las primeras se encuentran directamente en el motor (built-in), las segundas están en las bibliotecas añadidas que se tienen que instalar en el sistema de forma específica.

En primer lugar, intentamos comprender el mecanismo para cargar dinámicamente estas bibliotecas. Si abrimos el archivo "php3.ini" veremos un párrafo dedicado a las "Extension", es decir, extensiones en el mismo lenguaje. Para ser más claros podemos decir que éstas son un conjunto de bibliotecas que se invocan cuando se ejecuta un script como ocurre para cargar los módulos con un servidor de la red.
La sintaxis para cargar estas extensiones de lenguaje es muy simple: una vez instalada la biblioteca en el sistema, no nos queda que añadir en el archivo php3.ini la línea:

extension=biblioteca

Llegados a este punto tenemos que diferenciar entre los sistemas Unix y los sistemas Windows. Para las dos sintaxis el procedimiento es el mismo, pero, por supuesto, el nombre de las bibliotecas y sus extensiones no lo es. En los sistemas Windows, una biblioteca se reconoce por la extensión ".dll", mientras que para Unix las extensiones son ".so". Por lo tanto, según el sistema, tendremos que utilizar el nombre correcto para la biblioteca y, sobre todo, la extensión correcta. Obviamente, para los que tengan los dos sistemas instalados y consigan ver los dos está claro que las dll no se pueden cargar en un sistema Unix y viceversa.
Cuando escribimos el nombre de la biblioteca que queremos cargar, no tenemos que detenernos en el recorrido completo, es necesario sólo el nombre de la misma, por ejemplo "pgsql.so" para las bases de datos Postgres. Esto porque, en el mismo archivo, hay otra línea de configuración que define en qué directorio están estas biblioteca. Leyendo el archivo php3.ini podéis ewncontrar la línea "extension_dir = directory" que le dirá al motor la locación estándar de las bibliotecas. Por lo tanto, cuando especificamos con "extension" una biblioteca que quremos cargar para ejecutar un script, de hecho se juntan "extension_dir" y "extension". Si, por ejemplo, "extension_dir" es "/usr/lib/php3" y hemos impostado "extension=pgsql.so", el PHP sabrá que para cargar la biblioteca "pgsql.so" tendrá que buscarla en "/usr/lib/php3/pgsql.so".

Además, con "extension= ...." es posible especificar no sólo una biblioteca sino toda la serie de las bibliotecas que nos hagan falta. Por ejemplo, podemos tener algo parecido como:

extension=pgsql.so
extension=mysql.so
extension=gd.so
extension=imap.so
extension=ldap.do
extension=xml.so


etc. Como podéis ver en la segunda línea, es posible especificar también dos o más bibliotecas para un mismo "campo". En este caso hay dos bibliotecas para dos bases de datos (Postgres e mySQL) que, además de no interferir la una con la otra, podrían teóricamente ser utilizadas a la vez, siempre que esto sea útil.

Si intentamos invocar una función no built-in en un script, el script visualiza un mensaje de error que nos avisa de que estamos intentando utilizar una función que no está reconocida. Por ejemplo, para las bases de datos se tienen que cargar las extensiones como hemos dicho antes y, sólo después de haber dado este paso, será posible utilizar las funciones relacionadas sin arriesgarnos a que salgan mensajes de error, siempre que se hayan utilizado de forma correcta.

  Volver al inicio de la página