Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problema con Classe en PHP

Estas en el tema de Problema con Classe en PHP en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola.. bueno pues les copmento tengo un problema con una classe .. bueno problema no tengo.. lo que tengo es una duda con esta classe ...
  #1 (permalink)  
Antiguo 13/07/2011, 08:11
 
Fecha de Ingreso: octubre-2010
Mensajes: 123
Antigüedad: 14 años, 1 mes
Puntos: 10
Problema con Classe en PHP

Hola.. bueno pues les copmento tengo un problema con una classe .. bueno problema no tengo..

lo que tengo es una duda con esta classe que eh realizado.. miren.. la classe es un sistema de templates que hace lo siguiente..

Creo un archivo HTML .. con lago asi.

Hola {$usuario}!!!
Son las: {$reloj}

Entonces esas variables son relazadas por las siguientes.
Hola Drek!!!
Son las: 22:10

.. =D.. entonces no es neccesario menter PHP.. la siguiente duda es que cuando $reloj es un araray.. simplemente me debuelve

Son las: Array

Entonces le puse un sistema para que pudiera leer arrays pero lo tuve que hacer manualmente ..

y solo lee hasta 2 arrays.

{$array{key1}{key2}}

Pero el problema es que hay ocaciones en las cuales neccesito más de 2 arrays y llego a utilizar hasta 6.. entonces queria ver si me podrian ayudar a terminar mi classe .. para que leea todos los arrays que tenga una variable y me cree una setencia.. y no tengo muy bien la idea...

tenia una idea con while(is_array($value)) pero nunk me salio.. les dejo el script

Código PHP:
<?php

class skin {

private 
$data;

public function 
__construct($archivo) {
if(
$archivo != NULL) {
if(
is_string($archivo)) {
if((
file_exists($archivo)) && (is_readable($archivo))) {
$skin file_get_contents($archivo) or die("Error desconosido al cargar el archivo: ".$archivo);
$this->data $skin;
} else { die(
"Archivo inexistente o no leible: ".$archivo); }
} else { die(
"Nombre del archivo invalido: ".$archivo); }
} else { die(
"Archivo no encontrado: ".$archivo); }
}

public function 
sub($array) {
if(
$array != NULL) {
if(
is_array($array)) {
foreach(
$array as $key => $value) { $sub["{\$".$key."}"] = $value; if(is_array($value)) { foreach($value as $k => $v) { $sub["{\$".$key."{".$k."}}"] = $v; if(is_array($v)) { foreach($v as $n_k => $n_v) { $sub["{\$".$key."{".$k."}{".$n_k."}}"] = $n_v; } } } } }
$this->data strtr($this->data,$sub);
} else { die(
"Valor no es array"); }
} else { die(
"Valor nulo en la string"); }
}

public function 
skin() { 
$this->data utf8_decode($this->data); echo $this->data; }
}

?>
  #2 (permalink)  
Antiguo 13/07/2011, 08:28
Avatar de robertereter  
Fecha de Ingreso: mayo-2008
Ubicación: Sevilla city
Mensajes: 10
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Problema con Classe en PHP

Para acceder a los valores de un array debes usar corchetes.

$reloj = array();
$reloj[0] = 'valor 1';
$reloj[1] = 'valor 2';

echo 'Hola, son las'.$reloj[1];
  #3 (permalink)  
Antiguo 13/07/2011, 08:38
 
Fecha de Ingreso: octubre-2010
Mensajes: 123
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Problema con Classe en PHP

Cita:
Iniciado por robertereter Ver Mensaje
Para acceder a los valores de un array debes usar corchetes.

$reloj = array();
$reloj[0] = 'valor 1';
$reloj[1] = 'valor 2';

echo 'Hola, son las'.$reloj[1];
WTF !!.. almenos leistes?...

el problema esta en que quiero que la classe me detecte los arrays ._.
actualmente me lee hasta 2 arrays dentro de 1 array pero.. quiero que siga leyendo hasta que termine

Código PHP:
foreach($array as $key => $value) { $sub["{\$".$key."}"] = $value; if(is_array($value)) { foreach($value as $k => $v) { $sub["{\$".$key."{".$k."}}"] = $v; if(is_array($v)) { foreach($v as $n_k => $n_v) { $sub["{\$".$key."{".$k."}{".$n_k."}}"] = $n_v; } } } } } 
Esta parte lee hasta 2 niveles despues de un array .. pero quiero que me lea todos los arrays que tenga un array y que no se de tenga hasta que termine de leer todos..

Espero entiendan y lo lean.. un saludo y gracias . !!
  #4 (permalink)  
Antiguo 13/07/2011, 08:48
 
Fecha de Ingreso: octubre-2010
Mensajes: 123
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Problema con Classe en PHP

Bueno les dejare un Ejemplo de como funciona...


Código PHP:
<?php

$array
["contenido"] = "EL Contenido";
$array["array"]["key2"] = "otro contenido";
$array["array"]["key3"]["adentro"] = "3 Arrays";
$array["array"]["key4"]["adentro"]["key4"] = "4 Arraysss";

//Aqui esta un ejemplo de como funciona la Classe
$skin = new skin("template.html");
$skin->end($array);
$skin->skin();

?>
y el template.html es:
Código HTML:
Ver original
  1. Contenido: {$contenido}
  2. Array Key2: {$array{key2}}
  3. Array 3 Nivel {$array{key3}{adentro}}
  4. Array 4 Nivel {$array{key4}{key4}{adentro}}

Entonces .. solo me lee hasta 3niveles y el 4 nivel no me lo lee porque neccesito que la clase me lea todos los arrays de dicha classe hasta que se acaben.. el resultado seria esto:

Código HTML:
Ver original
  1. Contenido: El Contenido
  2. Array Key2: otro contenido
  3. Array 3 Nivel 3 Arrays
  4. Array 4 Nivel {$array{key4}{key4}{adentro}}

y finalmente el 4nivel no me lo respeta porque no lee todos.. aguna idea para hacer el script?...

Código PHP:
foreach($array as $key => $value) { $sub["{\$".$key."}"] = $value; if(is_array($value)) { foreach($value as $k => $v) { $sub["{\$".$key."{".$k."}}"] = $v; if(is_array($v)) { foreach($v as $n_k => $n_v) { $sub["{\$".$key."{".$k."}{".$n_k."}}"] = $n_v; } } } } } 
Saludos ^^
  #5 (permalink)  
Antiguo 13/07/2011, 09:05
Avatar de robertereter  
Fecha de Ingreso: mayo-2008
Ubicación: Sevilla city
Mensajes: 10
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Problema con Classe en PHP

Si quieres optimizarlo para que sea recursivo tendría que verlo detenidamente. La verdad que no ando ahoramismo bien de tiempo.
Para salir del paso rapidamente te diría que hicieras varios foreach más :D
  #6 (permalink)  
Antiguo 13/07/2011, 09:06
 
Fecha de Ingreso: octubre-2010
Mensajes: 123
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Problema con Classe en PHP

hehe .. sii .. puedo hacer más para que lea mas.. pero no me gusta hacer cochinadas xDD.. u.u

Etiquetas: classe, html, php, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:19.