Ver Mensaje Individual
  #17 (permalink)  
Antiguo 12/02/2013, 14:32
Onedy
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 2
Pregunta Respuesta: Funciones recursivas no devuelven 'nada'

Escribo a continuación los archivos:

En index.php
Código PHP:
//...

//cargamos la pagina
$pag = new Pagina();
$pag->cargarTema(); 
En Pagina.php:
  • Código PHP:
    /**
    * Empieza a cargar el tema predeterminado */
    public function cargarTema(){
    if(!
    $this->incluir('index.php')) die('Tema no encontrado');

  • Código PHP:
    /**
    * Incluye el archivo $nombre_archivo. Lo busca en el directorio del tema * predeterminado.
    * $nombre_archivo
    * @param type $nombre_archivo DEBE incluir tambien las posibles subcarpetas
    * en las que esté a partir de la carpeta del tema; ejemplo:
    * Carpeta del tema: C:\wamp\www\temas\tema_negro\
    * Nombre del archivo: opciones\archivo.php
    * @return type Devuelve 1 (true) si ha encontrado el archivo, FALSE de lo contrario */
    public function incluir($nombre_archivo){
    return include 
    DIR_TEMAS.DS.$this->temaActual.DS.$nombre_archivo;


En index.php del tema predeterminado:
Código PHP:
<?php
[B][COLOR="green"]$this->incluir('funciones.php');[/COLOR][/B]
?>
<!DOCTYPE html>
<head>
...
<section id="izquierda">
                <?php
                                
if($this->esBackend()) $this->incluir('unarchivo.php');
                                elseif(
$this->esFrontend()){
                                    if(
$this->es_principal()) $this->incluir('otroarchivo.php');
                                    elseif(
$this->es_post()) $this->incluir('otro.php');
                                    elseif(
$this->es_pagina()) $this->incluir('lapagina.php');

                                    [
B][COLOR="Green"]elseif($this->es_subir()) $this->incluir('subir.php');[/COLOR][/B]

                                    elseif(
$this->es_registro()) $this->incluir('registro.php');
                                }
                                else 
$this->incluir('registro.php');
...
En subir.php:
Código PHP:
<article><?php if(!$this->nombrePagina()) echo 'holamundo'//cuando $this->nombrePagina() devuelve FALSE, escribe 'holamundo', es decir, puedo usar $this
?>
                                    <div class="sus">
                                        <h2>Post nuevo</h2>
...
Ahora bien, en funciones.php:
Código PHP:
<?php
/**
 * Funcion que uso para pasar el arbol y asi simplificar al maximo el codigo en el tema
 * @return string La lista definitiva
 */
function imprimir_categorias(){
    
//global $pag;
    
return recorrerCategoriasPadre($this->crearArbolCategorias()); //no me deja usar $this
}
¿Alguna explicación de por qué no estoy en el contexto adecuado? ¿Por qué me deja usar $this en subir.php, y en funciones.php no, si estan en el mismo nivel?

Gracias