Foros del Web » Programando para Internet » PHP »

diferencia a incluir con include y "copiar y pegar"

Estas en el tema de diferencia a incluir con include y "copiar y pegar" en el foro de PHP en Foros del Web. tengo dos códigos: el primero me da error, ya que no se pueden anidar clases: Código PHP: <? class  uno {     public function  __construct ()     { ...
  #1 (permalink)  
Antiguo 15/11/2010, 06:14
 
Fecha de Ingreso: agosto-2010
Mensajes: 40
Antigüedad: 13 años, 8 meses
Puntos: 2
diferencia a incluir con include y "copiar y pegar"

tengo dos códigos:
el primero me da error, ya que no se pueden anidar clases:
Código PHP:
<?
class uno
{
    public function 
__construct()
    {
        
$this->hola();
    }
    public function 
hola()
    {
        
        class 
dos
        
{
            public function 
__construct()
            {
                echo 
"funciona";
            }
        
        }
        
$instancia=new dos();
    }
}
$uno=new uno();        
?>
ahora separando los códigos en dos archivos y llamandolo por un include
clase2.php
Código PHP:
<?php

    
class dos
    
{
        public function 
__construct()
        {
            echo 
"funciona";
        }
        
    }
?>
Código PHP:
 <?
class uno
{
    public function 
__construct()
    {
        
$this->hola();
    }
    public function 
hola()
    {
        include (
"clase2.php");
        
$instancia=new dos();
    }
}
$uno=new uno();        
?>
funciona todo a la perfeccion.
¿es correcto, aun sin dar error en el segundo caso implementar esta estructura?¿que diferencias hay entre hacer un include y "pegar" el codigo dentro?
  #2 (permalink)  
Antiguo 15/11/2010, 06:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: diferencia a incluir con include y "copiar y pegar"

No se pueden anidar clases. Las clases se trabajar por separado.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 15/11/2010, 06:19
 
Fecha de Ingreso: agosto-2010
Mensajes: 40
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: diferencia a incluir con include y "copiar y pegar"

entonces son ambos casos incorrectos desde un punto de vista estructural? ¿porque php no me da error en el segundo caso y si en el primero?

el ejemplo que puse no es el real, en realidad se produce un include dentro de la clase a un archivo, el cual contiene un include a una clase y la instancia, puse este ejemplo por hacerlo mas sencillo.
  #4 (permalink)  
Antiguo 15/11/2010, 06:45
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: diferencia a incluir con include y "copiar y pegar"

lo que puedes es utilizar herencia, crear una segunda clase extendida de la primera
  #5 (permalink)  
Antiguo 15/11/2010, 06:51
 
Fecha de Ingreso: agosto-2010
Mensajes: 40
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: diferencia a incluir con include y "copiar y pegar"

no es el tipo de relacion adecuada, lo que pretendo es que mediante un metodo de una clase ejecutar distintos módulos, cada módulo tiene un archivo principal desde el cual se ejecutan las distintas funciones de ese módulo, pudiendo haber dentro de ese módulo una estructura de clases, por tanto puede darse el caso en el que al incluir uno de estos archivos principales de un módulo, sea necesario incluir o utilizar un conjunto de clases especificas.

Realmente no necesito heredar ningun metodo ni atributo, ya que las funciones de los módulos son independientes de esta clase "ejecutar"
  #6 (permalink)  
Antiguo 15/11/2010, 06:54
 
Fecha de Ingreso: agosto-2010
Mensajes: 40
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: diferencia a incluir con include y "copiar y pegar"

lo mas parecido que se me ocurre es una simple redireccion a el archivo adecuado en vez de incluirlo, seria correcto?
  #7 (permalink)  
Antiguo 15/11/2010, 07:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: diferencia a incluir con include y "copiar y pegar"

Pues puedes instanciar o heredar (si es que es heredable la clase) desde una clase
Código PHP:
Ver original
  1. <?php
  2. class foo{
  3.     public function bar(){
  4.         $obj = new bar();
  5.         return $obj->foo();
  6.     }
  7. }
  8.  
  9. class bar{
  10.     public function foo(){
  11.         return get_class();
  12.     }
  13. }
  14.  
  15. $obj = new foo();
  16. echo $obj->bar();
o
Código PHP:
Ver original
  1. <?php
  2. class bar{
  3.     public function foo(){
  4.         return get_class();
  5.     }
  6. }
  7.  
  8. class foo extends bar{
  9.     public function bar(){
  10.         return $this->foo();
  11.     }
  12. }
  13.  
  14. $obj = new foo();
  15. echo $obj->bar();
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 15/11/2010, 10:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: diferencia a incluir con include y "copiar y pegar"

Creo entender lo que quieres hacer, y para hacerlo puedes hacer uso de Autoloading y que puedes mandar llamar las clases desde un nombre de variable, por ejemplo:
Código PHP:
Ver original
  1. $module = 'mod_' . $otraVar;
  2. $instance = new $module();

En el manual puedes ver ejemplos de como usar AutoLoading para cargar tus clases.

Saludos.
  #9 (permalink)  
Antiguo 15/11/2010, 12:29
 
Fecha de Ingreso: agosto-2010
Mensajes: 40
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: diferencia a incluir con include y "copiar y pegar"

muchas gracias!! estudiare ambas posibilidades ;)

gatorV creo que podria serme util pero no se exactamente como podria implementarlo, pongo un ejemplo mas extenso ;)

Código PHP:
<?php
/// archivo CORE, el cual ejecuta módulos
class core
{
    public function 
ejecutar($modulo,$funcion)
    {
        include(
"modulos/$modulo/index.php");
    }
}
?>

<?php
//un archivo index de un módulo, el cual se encarga de ejecutar el modulo. Permite utilizar clases y se encargar de ejecutar uno u otro codigo en funcion de $funcion
include ("includes/clases/saludo.php");
$saludo=new saludo();
switch(
$funcion)
{
    case 
"saludo"$saludo->saludar();
    case 
"despedida"$saludo->despedirse();
}
?>

<?php
//archivo includes/clases/saludo.php

class saludo
{
    public function 
saludar()
    {
        echo 
"Hola";
    }
    public function 
despedirse()
    {
        echo 
"adios!";
    }
}


?>
como veis consigo que un modulo sea independiente de el "core" y puedo ejecutar cualquier modulo llamando a la clase core de la siguiente forma:
core::ejecutar("modulo2","funcion1");

error no da.. y funcionar funciona, ademas me permite tener acceso a atributos en los cuales alla instanciada una libreria... es muy flexible...

alguna idea?

Última edición por ivan_teruel92; 15/11/2010 a las 12:50
  #10 (permalink)  
Antiguo 15/11/2010, 13:00
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: diferencia a incluir con include y "copiar y pegar"

La idea del __autoload es llamar la clase que está en un archivo, sin necesidad de estar declarándolo anteriormente, y así no te tienes que preocupar de escribir cada vez los include o require necesarios.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 15/11/2010, 13:03
 
Fecha de Ingreso: agosto-2010
Mensajes: 40
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: diferencia a incluir con include y "copiar y pegar"

Jajaja me costo un poco pero bueno ya "se me encendio la bombilla".... muchas gracias a todos, el autoload me soluciona el problema, quizás cuando tenga mas elavorado esto lo suba con licencia libre por si alguno le interesa ;)


Última edición por ivan_teruel92; 15/11/2010 a las 13:14
  #12 (permalink)  
Antiguo 15/11/2010, 14:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: diferencia a incluir con include y "copiar y pegar"

Lo mejor es algo así:
Código PHP:
Ver original
  1. <?php
  2. //archivo includes/clases/saludo.php
  3.  
  4. class saludo
  5. {
  6.     public function saludar()
  7.     {
  8.         echo "Hola";
  9.     }
  10.     public function despedirse()
  11.     {
  12.         echo "adios!";
  13.     }
  14. }

core.php:
Código PHP:
Ver original
  1. function __autoload($class_name) {
  2.     include 'includes/clases/'.$class_name.'.php';
  3. }
  4.  
  5. class core
  6. {
  7.     public function ejecutar($modulo,$funcion)
  8.     {
  9.           $class = new $modulo(); // $modulo = saludo
  10.           $class->$funcion(); // $funcion = 'saludo' | 'despedida'
  11.           // o
  12.           call_user_func(array($class, $funcion));
  13.     }
  14. }

Saludos.
  #13 (permalink)  
Antiguo 15/11/2010, 16:32
 
Fecha de Ingreso: agosto-2010
Mensajes: 40
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: diferencia a incluir con include y "copiar y pegar"

Perfecto ;) muchisimas gracias!!

Etiquetas: diferencia, include, incluir
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 12:18.