Foros del Web » Programando para Internet » PHP »

clases en php

Estas en el tema de clases en php en el foro de PHP en Foros del Web. Saludos buenas tardes Estoy investigando sobre como meter comandos de una clase dentro de otra clase diferente, me explico... Imaginemos que tenemos dos clases en ...
  #1 (permalink)  
Antiguo 31/10/2009, 09:23
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
clases en php

Saludos buenas tardes

Estoy investigando sobre como meter comandos de una clase dentro de otra clase diferente, me explico...

Imaginemos que tenemos dos clases en dos ficheros: clase1.php y clase2.php

La clase1 es $clase1 = new $clase1();
La clase2 es $clase2 = new $clase2();

Vale, ahora por ejemplo en el fichero clase1.php quiero hacer la siguiente función..

Código PHP:
<?php

class clase1 {


        function 
prueba(){
            
            
// aquí estamos llamando a una parte de clase2.php
            
print $clase2->prueba;

        }

}

?>
En fin, si le hago un include me dice que no, que no es una función pública o unexpected T Variable o algún error de esos...

¿Qué solución véis?

Graciaas,
Un saludo
  #2 (permalink)  
Antiguo 31/10/2009, 09:29
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: clases en php

Pero $clase2->prueba que es? Una funcion o es una variable?

De todos modos, vos deberias poder hacer un include o un require antes de la declaracion de una clase. Y dentro de clase1 llamar a metodos de clase2, pasa q poner $clase2->prueba no esta bien. Si es prueba una funcion, debes poner $clase2->prueba() ... en caso de que sea una variable deberias usar tambien una funcion, por ejemplo $clase2->getPrueba().

Espero que te haya servido la ayuda.

Saludos.
  #3 (permalink)  
Antiguo 31/10/2009, 09:47
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: clases en php

Hola

Ante todo muchas gracias por tu ayuda ;)
El error exacto que me lanza y me sigue lanzando es el siguiente:

Fatal error: Call to a member function answer() on a non-object in /var....
  #4 (permalink)  
Antiguo 31/10/2009, 09:49
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: clases en php

En el codigo que nos pusiste no se ve ninguna llamada a answer()...como la llamas? Quizas eso este mal y al final lo que nos mostras esta bien jeje.

Saludos.
  #5 (permalink)  
Antiguo 31/10/2009, 09:54
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: clases en php

Contenido de /class/class1.php

Código PHP:
<?php

include "class2.php";

class 
Class1{

        function 
prueba() {

            
$agi->answer(); // esto está en class2.php

        
}

    }

?>
En test.php tengo lo siguiente..

Código PHP:
<?php

    
include "class1.php";
    
    
$Class1 = new Class1();

    
$Class1->test();

?>
  #6 (permalink)  
Antiguo 31/10/2009, 10:50
Avatar de AlphaZT  
Fecha de Ingreso: octubre-2009
Mensajes: 5
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: clases en php

Colega yo te recomiendo que leas algo que le llamamos "herencia"
Cita:
<?php
class class1
{
function msj()
{
echo "hola";
}
}
class class2 extends class1
{
function msj2()
{
parent::msj();
}
}
$obj = new class2();
$obj->msj2();
?>
o si simplemente quieres llamar una funcion de una clase con funciones static o globales por ejemplo:

Cita:
<?php
class class1
{
static public function msj()
{
echo "hola";
}
}

class class2
{
function msj2()
{
class1::msj();
}
}

$obj = new class2();
$obj->msj2();
?>
o para ello mejor haces un modulo de funciones comunes que lo incluyes un las otras clases

Recomendacion: "htt .. / php.net/manual/en/language.oop5.php"
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 14:50.