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

PHP OO include

Estas en el tema de include en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas pues tengo un problemilla con php. estoy haciendo una aplicacion orientada a objetos y he creado una clase que contiene funciones las cuales llama ...
  #1 (permalink)  
Antiguo 20/05/2012, 12:49
 
Fecha de Ingreso: septiembre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta include

Buenas pues tengo un problemilla con php.

estoy haciendo una aplicacion orientada a objetos y he creado una clase que contiene funciones las cuales llama el html de cada seccion de la pagina.

ejemplo:

class Vista{

function cabecera(){
return "<h1>CABECERA</h1>";
}

}

despues de esto en mi index hago el include del archivo que tiene esta clase

include_once $_SESSION["parametros"]["hostWEB"]."/Vista/Vista.php";


esto no presenta problemas, lo que presenta problemas es cuando quiero crear el objeto de este tipo

$vista=new Vista();

echo $vista->cabecera();

diciendome

Fatal error: Class 'Vista' not found in C:\xampp\htdocs\index.php on line 36

al inicio pensé que no se estaba incluyendo el archivo, pero en ese archivo pongo un echo por fuera de la declaración de la clase y me es imprimido.

es la cosa mas extraña que me incluya el archivo pero no me reconozca su contenido
agradeceria de corazon si me dijeran si saben que es lo que pasa.
  #2 (permalink)  
Antiguo 20/05/2012, 14:17
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: include

Con tan poco código es difícil saber, pero, podría ser que Vista extienda de otra clase que todavía no ha sido cargada o defines posteriormente, en el mismo archivo.

Por cierto, no es imprimido, sino impreso.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 20/05/2012, 14:36
 
Fecha de Ingreso: septiembre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: include

me disculpo por aquello de imprimido.

pero el codigo como esta es la sustancia,

un marco general para la aplicacion:


class MarcoVistas{

function head(){
$html="
<link href='".$_SESSION["parametros"]["hostWEB"]."/Style/ds-cenatic.css"."' rel='stylesheet' type='text/css'>
";

$html.="<div id='main' style='background:#F0E9E9'>";
$html.="<div id='head' style='background:gray'>";
$html.="<div id='logos' style='background:gray'>";
$html.="<div id='logo_EU' style='background:#999999'>";
$html.="LOGO EU";
$html.="</div>";
$html.="</div>";
$html.="<div id='menu_ppal' style='background:gray'>";
$html.="<div id='sup' style='background:gray'>";
$html.="<div id='opciones_head' style='background:gray'>";
$html.=" INICIO | PUBLICA | LOGIN | REGISTRATE ";
$html.="</div>";
$html.="</div>";
$html.="<div id='sub' style='background:gray'>";
$html.="<div id='logo_empresa' style='background:gray'>";
$html.="</div>";
$html.="<div id='titulo' style='background:gray'>";
$html.="</div>";
$html.="</div>";
$html.="</div>";
$html.="</div>";
return $html;
}
}


y el index:

<?php
session_start();
?>
<html>
<head>
<link href="./Styles/ds-cenatic.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php

include_once "Configuracion.php";
$_SESSION["parametros"]=$parametro;
include_once $_SESSION["parametros"]["hostWEB"]."/Vista/marcoVistas.php";
$marco=new MarcoVistas();

echo $marco->head();

if(isset($_REQUEST["funcion"])){

include_once $_SESSION["parametros"]["hostWEB"]."/".$_REQUEST["capa"]."/".$_REQUEST["modulo"]."/".$_REQUEST["controlador"].".php";

$objeto=new $_REQUEST["controlador"];

echo $objeto->main();
}
else{
echo "PAGINA INICIAL...";
}
echo $marco->foot();
?>
</body>
</html>


el index puede verse enredado pero solo es centrarse en la parte de

include_once "Configuracion.php";
$_SESSION["parametros"]=$parametro;
include_once $_SESSION["parametros"]["hostWEB"]."/Vista/marcoVistas.php";
$marco=new MarcoVistas();

el include lo hace, el problema es que no reconoce cuando se crea el objeto $marco=new MarcoVistas();

$parametro es una variable declarada en el archivo Configuracion.php que contiene $parametro["hostWEB"]="http://localhost/ProyectoX";

el error que sale es Fatal error: Class 'UsuarioVista' not found in C:\xampp\htdocs\ProyectoX\Negocio\Administracion\U suarioController.php on line 36
  #4 (permalink)  
Antiguo 20/05/2012, 15:29
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: include

$_SESSION["parametros"]=$parametro;

en ese punto, no tienes $parametro definido.

Saludos.

uf! lo siento!! no leí la parte de abajo de tu respuesto. No dije nada!!
  #5 (permalink)  
Antiguo 20/05/2012, 16:43
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: include

Bueno, pues el problema no está en index.php, sino en UsuarioController.php que no encuentra la clase UsuarioVista.

Por cierto, te recomiendo que la ruta para incluir archivos sea en base a directorios y no a URL, podrías tener algún inconveniente al mudar tu sitio a otro servidor.
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 20/05/2012, 22:50
 
Fecha de Ingreso: septiembre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: include

si copie el error que no era jeje el error es el de no poder crear el objeto de MarcoVistas

no quiero hacer la ruta relativa la de directorio, pq como es orientado a objetos voy a llamarlo desde cualquier lado, si lo creo relativo me presentara problemas depende de la ruta donde lo incluya
  #7 (permalink)  
Antiguo 25/05/2012, 11:52
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 20 años, 11 meses
Puntos: 60
Respuesta: include

Sinceramente no veo nada de programación orientada a objetos, tienes una mezcla de cosas muy burda.

1.- Investiga un poco más acerca de los paths y los include_path de PHP, ya que el razonamiento de triby con respecto a las rutas es correcto.

2.- Es demasiado sucia la forma en que deseas manejar las "vistas", yo le echaria un ojo a como lo hace Zend

http://martinfowler.com/eaaCatalog/twoStepView.html

3.- Separa correctamente el MVC.
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador

Etiquetas: html, include
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 00:26.