Computer Science is no more about computers than astronomy is about telescopes. Edsger W. Dijkstra

Archivos ini en PHP

2007-06-30 12:17:02-05

Programacion

Hace poco estaba haciendo un proyecto y tuve la necesidad de agregar un archivo de inicialización para tener ciertos datos específicos de la configuración del sistema en ese servidor.

Al no tener gran conocimiento de PHP, pensé que el "parsing" del archivo de inicialización lo tendría que hacer "a patín", con un poco de código. Pero me encontré con una función llamada "parse_ini_file()", la cual facilita mucho esta tarea.
(Aquí el post, con código resaltado)

Imaginemos que tenemos este archivo de configuración (prueba.ini):

[conexion]
; Estos datos son para la conexion y este es un comentario.
servidor = localhost
usuario = juanito

[sistema]
estilo = simple

Para obtener la información de cada variable únicamente se hace lo siguiente:

   $info = parse_ini_file("prueba.ini");

  // La información quedará guardada en un arreglo donde el índice será el nombre de la variable, por lo tanto podemos   obtenerlo de la siguiente forma:
  // Si queremos imprimir la informacion del servidor sería: 
  echo $info['servidor'];
  // Si queremos imprimir el estilo del sistema
  echo $info['estilo'];
?>

Si agregamos un parámetro más a la función, separa por áreas del archivo de inicialización.

   $info = parse_ini_file("prueba.ini", true);

  // La información quedará guardada en un arreglo multidimensional donde el primer índice será el nombre del "área del archivo ini" y el segundo el nombre de la variable, por lo tanto podemos   obtenerlo de la siguiente forma:
  echo $info['conexion']['servidor'];
  // Si queremos imprimir el estilo del sistema
  echo $info['sistema']['estilo'];
?>


Permalink: http://www.mononeurona.org/users/entry/thot/603


Comments Comentblogs:
1.- asarch asarch wrote:

Cuando estaba aprendiendo a usar el API de Microsoft para Windows 3.1 me encontré con un par de funciones que hace exactamente lo mismo, bueno, casi casi ya que tienen un "ligerito" error al querer guardar o leer un valor entero ya que primero tenía que convertirse en cadena este valor y de ahí realizar la operación. Las funciones que menciono son las siguientes:

GetProfileString (http://msdn2.microsoft.com/en-us/library/ms724366.aspx)

Más adelante estudiando la librerías OWL (Object Windows Library) de Borland me encontré con un tema que, al principio no le puse mucha atención debido a que el ejemplo que mostraban nada más causaba una falla de segmentación de memoria, el cual era la persistencia de objetos.

Cuando finalmente pude leer el libro del inventor del lenguaje C++, Bjarne Stroustrup, El Lenguaje de Programación C++ y finalmente pude comprender lo que esto significaba fue uno de los temas que más me gustó por la libertad que la sobrecarga de los operadores te permitía:

std::ofstream out ("file.ini");

if (!out)
{
std::cerr << "No se puede crear file.ini" << std::endl;
exit (1);
}

// 'aplicacion' es el objeto que queremos persistir
aplicacion >> out;
out.close ();

...

// Ahora vamos al reves
std::ifstream in ("file.ini");

// Si el archivo existe leemos los valores de el
if (in)
{
aplicaion << in;
in.close ();
}

Me imagino que PHP por ser un lenguaje completamente orientado a objetos debe de tener la habilidad de persistir objetos tal como se hace en C++.

De todas formas checa este tema ya que personalmente fue uno de los temas que más me gustó de C++

Suerte y ¡¡¡happy hacking!!!


2007-07-01 14:16:56-05
2.- thot alucard_thot wrote:

Lo único que estás haciendo es redireccionar el flujo de un objeto a un archivo y viceversa. (Eso lo puedes hacer con cualquier tipo de dato). Si necesitas especificar un formato especifico para la forma en que recibes o sacas del flujo, simplemente sobrecargas los operadores >> o <<.

Un ejemplo sencillito de eso puede ser convertir un archivo a la entrada estándar. (Esto es, que el archivo se convierta en la entrada como si lo recibieras de teclado).

En el caso de el ejemplo que estoy poniendo en PHP, es el parsing (la interpretación de el archivo .ini).

2007-07-01 15:36:50-05

New Comentblog

Captcha



Login



Remember me:
thot
Amante de la libertad y por lo mismo un ferviente partidario del software libre.
linux politica programming software libre hacking
Powered by:
Despabilando la MonoNeurona.org
Livechat

<-Nombre
jairo wrote:
cual es el otro blog de thot
on 9/8/08

souf wrote:
está vivo... ¡VIVO!
on 10/6/08

souf wrote:
¡funciona!
on 10/6/08

souf wrote:
yes
on 10/6/08

thot wrote:
simón, s1mo yo creo que sí. Hay que ponerse de acuerdo.
on 6/5/08

s1m0 wrote:
que onda thot ps el aarkerio que tiene ganas de un curado de melon jaja ps ahora que vayamos a teotihuacan jaja como vez??
on 2/5/08

teosho wrote:
que tal alocardio_tut
on 26/4/08

aarkerio wrote:
Viendo si el livechat sirve
on 5/4/08

gmarin38 wrote:
q onda ponte chingon ya falta poco tiempo para tu taller :P
on 10/10/07

norcorp wrote:
guayabin que paso como has estado?
on 25/8/07

¿Qué estuve haciendo?
Yo
2 weeks, 2 days ago
Felicidades a Vendaval. Más vale tarde que nunca.
3 weeks, 1 day ago
Ni pedo, metí mejor imágenes del código.
on 19/8/08
no puedo publicar la segunda parte de la intro a JSF's
on 19/8/08
Por el modo "paranoico" del filtrado en el editor de la mononeurona...
on 19/8/08
Estaría chido que Centauro tuviera GeSHi
on 12/8/08
Preparando introducción a JSF's para la mononeurona
on 10/8/08
Muy buen libro por cierto. Da asco ver las porquerías que hacen algunos curas.
on 5/8/08
Ah caray! apenas lo presentan? y yo la lo leí :|
on 5/8/08
Algún otro mononeurón recibe errores de postgres cuando entra a la mononeruona?.
on 5/8/08
Galerias
FirefoxjEdit.orgGimpOpenOffice.orgHacker
Top
Colectivo MonoNeurona.org © 2002-2008.