Programar en Linux

Rodrigo Fuentealba darkprox en gmail.com
Lun Oct 23 14:53:26 CLST 2006


2006/10/23, Franco Catrin <fcatrin en tuxpan.com>:
> bibliotecas en PHP? de esas que se hacen "include"? porque si no son PHP
> estamos hablando de otro lenguaje ;)

Una muestra más...

mira en Linux el directorio /usr/lib/php/extensions/ (en SuSE es
/usr/lib/php5/extensions... no sé en CentOS, Fedora y otros
redhateños) y tendrás cosas como: bcmath.so, curl.so, filepro.so,
gmp.so, mbstring.so, mysql.so, pcntl.so, pspell.so, sockets.so,
sysvshm.so, xsl.so, bz2.so, dbase.so, ftp.so, iconv.so, mcrypt.so,
ncurses.so, pdo.so, shmop.so, sqlite.so, tokenizer.so, zlib.so,
calendar.so, dom.so, gd.so, imap.so, mhash.so, odbc.so, pgsql.so,
snmp.so, sysvmsg.so, wddx.so, ctype.so, exif.so, gettext.so, ldap.so,
mysqli.so, openssl.so, posix.so, soap.so, sysvsem.so, xmlrpc.so (ufff)

Esas cosas extienden la funcionalidad de PHP básico, y no son escritas
en PHP, sino en C/C++. Estas se cargan una sola vez, y permanecen en
memoria durante la ejecución del servidor, no cada vez que se requiere
una función. Para el caso típico de una página simple que sólo accede
a MySQL y no maneja ninguna clase de XML, ni archivos en bzip, ni
tiene autenticación LDAP, pues es muy fácil comentar en el php.ini las
extensiones que no se usarán, en el caso de un servidor custom.

Las mal llamadas "bibliotecas" de esas que se llaman con includes, son
simples scripts y va a depender de la habilidad del programador el
manejo de éstos. De hecho, include() e include_once() son malas
prácticas con PHP, ya que sólo producen warnings cuando el archivo no
se encuentra. Es mejor usar require_once(), ya que el archivo
permanece una sola vez (de ahi el "_once") en memoria, y no múltiples
veces como lo haces con require(). En todo caso, require y
require_once producen errores fatales.

Eso sale en la documentación de PHP.net (http://www.php.net/include/).
¿Para qué hacerle caso a otros manuales no oficiales y a perejiles que
aprendieron a programar con el método de tanteo?

-- 
Rodrigo Fuentealba Cartes
Desarrollador de Sistemas Web
Registered User 387639 - http://counter.li.org



Más información sobre la lista de distribución Linux