Clase Alias

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Junio 30th, 2009, 5:16 pm

Considere las palabras Color y Color .

Ahora, ¿qué pasa si yo quería tener una clase de PHP para un color o el color, cuál es un buen método para crear un alias?

Mi primer pensamiento es para crear la clase color Extender y crear un vacío denominado color .

Código: [ Select ]
class color
{
   // constructor, etc
}
class colour extends color {/*empty*/}
  1. class color
  2. {
  3.    // constructor, etc
  4. }
  5. class colour extends color {/*empty*/}


Me gustaría asumir, a partir del color es el color se extiende sin adiciones, en la práctica sería la creación de un puntero de bajo costo para la clase de color, me da un alias y la prevención de los argumentos sobre si la clase debe ser el nombre del color o el color.

Cualquiera que vea los inconvenientes para hacer esto?
¿Hay una mejor manera?

Veo theres class_alias función, pero theres ninguna información de versión en el manual en este momento por una parte, y que plantea un error fatal para una función no definida en mi copia de PHP 5.2.6 para dos.
Strong with this one, the sudo is.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Junio 30th, 2009, 5:16 pm

  • spork
  • Brewmaster
  • Silver Member
  • Avatar de Usuario
  • Registrado: Sep 22, 2003
  • Mensajes: 6128
  • Loc: Seattle, WA
  • Status: Online

Nota Junio 30th, 2009, 6:13 pm

Si esto fuera C + +, sólo #definirlo. :)

Supongo que el tiempo que su clase tiene un público bien definido interfaz, o si se utiliza una interfaz real de PHP para acceder a ella, entonces wouldnt ser un problema, pero todavía me parece hackish.
The Beer Monocle. Classy.
  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de Usuario
  • Registrado: May 21, 2004
  • Mensajes: 3229
  • Loc: South Africa
  • Status: Offline

Nota Junio 30th, 2009, 7:03 pm

¿Por qué quieren clases con diferentes nombres, pero la misma funcionalidad? Lo siento estoy tratando de entender los requisitos
Watch me grow
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Junio 30th, 2009, 9:32 pm

¿Ha intentado correr function_exists () para ver si esta función está disponible en su instalación?
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Junio 30th, 2009, 11:39 pm

Quote:
Si esto fuera C + +, simplemente #definen.


He intentado esto antes de hacer este hilo, no error, pero por alguna razón, tratando de crear una instancia utilizando el alias definido arrojó un error fatal ya que el "color" es una clase definida.

Código: [ Select ]
define('colour', color);


Quote:
¿Por qué quieres clases con nombres diferentes pero con la misma funcionalidad?


Para poner fin a las discusiones inútiles acerca de si una clase en una biblioteca debe ser nombrado "color" o "color". Si se admiten ambos ése es el final de la misma. Im seguro de que sería muy útil para otras palabras también.

Quote:
¿Ha intentado ejecutar function_exists () para ver si esta función está disponible en su instalación?

Didnt necesario, traté de usar y recibió un error fatal. Eso es un indicador muy bueno que el function_exists va a regresar falsos. :)
Strong with this one, the sudo is.
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Junio 30th, 2009, 11:49 pm

joebert escribió:
Quote:
¿Ha intentado ejecutar function_exists () para ver si esta función está disponible en su instalación?

Didnt necesario, traté de usar y recibió un error fatal. Eso es un indicador muy bueno que el function_exists va a regresar falsos. :)

Eh, mi cabeza dura que no tomó en gif "alt =": lol: "title =" Laughing ">


No sé lo que usted está teniendo problemas. (Eso es si usted está usando PHP).

Esta es mi clase de prueba...
Código: [ Select ]
<?php
class color {
    function say_apple()
    {
        echo 'apple';
    }
    function say_something($a)
    {
        echo $a;
    }
}
 
class colour extends color {
 
}
?>
  1. <?php
  2. class color {
  3.     function say_apple()
  4.     {
  5.         echo 'apple';
  6.     }
  7.     function say_something($a)
  8.     {
  9.         echo $a;
  10.     }
  11. }
  12.  
  13. class colour extends color {
  14.  
  15. }
  16. ?>

Y esta es mi aplicación de la misma
Código: [ Select ]
<?php
include 'class.php';
$color = new color();
$color->say_apple();
echo "<br />";
$color->say_something('I am saying this using color!!!');
echo "<br />";
echo "<br />";
echo "<br />";
$colour = new colour();
$colour->say_apple();
echo "<br />";
$colour->say_something('This is me using colour...');
?>
  1. <?php
  2. include 'class.php';
  3. $color = new color();
  4. $color->say_apple();
  5. echo "<br />";
  6. $color->say_something('I am saying this using color!!!');
  7. echo "<br />";
  8. echo "<br />";
  9. echo "<br />";
  10. $colour = new colour();
  11. $colour->say_apple();
  12. echo "<br />";
  13. $colour->say_something('This is me using colour...');
  14. ?>

Eso me dio
Quote:
manzana
Lo digo de color usando!


manzana
Este soy yo utilizando el color...

Bien trabajado conmigo.

[EDIT:]

o no puede hacerlo todo en __autoload ();
Código: [ Select ]
<?php
function __autoload($class)
{
    $class_alias = array(
        'colour' => 'color'
    );
   
    if(file_exists("classes/$class.php"))
    {
        include("classes/$class.php");
    }
    else
    {
        if(file_exists("classes/{$class_alias[$class]}.php"))
        {
            include("classes/{$class_alias[$class]}.php");
        }
    }
}
?>
  1. <?php
  2. function __autoload($class)
  3. {
  4.     $class_alias = array(
  5.         'colour' => 'color'
  6.     );
  7.    
  8.     if(file_exists("classes/$class.php"))
  9.     {
  10.         include("classes/$class.php");
  11.     }
  12.     else
  13.     {
  14.         if(file_exists("classes/{$class_alias[$class]}.php"))
  15.         {
  16.             include("classes/{$class_alias[$class]}.php");
  17.         }
  18.     }
  19. }
  20. ?>

¿Qué te parece? (Im seguro de que son capaces de encontrar la manera de trabajar que :lol: )
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Junio 30th, 2009, 11:54 pm

Funciona bien para mí bandido. :)

Más o menos importante en busca de la entrada en él, y otros posibles métodos de lograr la clase de alias. :D
Strong with this one, the sudo is.
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Junio 30th, 2009, 11:54 pm

Me acaba de editar mi post...¿qué pasa con eso? Yo he visto antes de editar su puesto para evitar la doble desplazamiento.

/ / No me gusta publicar una edición de mil veces, ya sea para añadir una palabra, una pequeña frase, o arreglar un error en la codificación gramatical o añadir más información y, a continuación, averiguar hay otro puesto en mí...
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Julio 1st, 2009, 12:02 am

Algo a lo largo de esas líneas se ve como el trabajo.
Strong with this one, the sudo is.
  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de Usuario
  • Registrado: May 21, 2004
  • Mensajes: 3229
  • Loc: South Africa
  • Status: Offline

Nota Julio 1st, 2009, 1:54 am

LOL Ok bien aquí son los problemas XX. Cuando se crea una instancia de una subclase creará automáticamente un identificador de su clase para que no pare usted tiene dos instancia en la memoria en lugar de uno.

Yo pensaría aliasing clase sería la forma de la

Código: [ Select ]
//color
$color = new Color();

//colour
$colour = new Color();
  1. //color
  2. $color = new Color();
  3. //colour
  4. $colour = new Color();


la idea de implementar una interfaz significa que acabaría con código duplicado aunque

Código: [ Select ]
public interface IRGBVisualRepresentation{

}

public class Color implements IRGBVisualRepresentation{
//members here
}

public class Colour implements IRGBVisualRepresentation{
//members heres
}
  1. public interface IRGBVisualRepresentation{
  2. }
  3. public class Color implements IRGBVisualRepresentation{
  4. //members here
  5. }
  6. public class Colour implements IRGBVisualRepresentation{
  7. //members heres
  8. }


O usted podría darle el nombre que le puse por encima de eso implica que es un color como lo hice aquí LOL RGBVisualRepresentation (I tranquilo como que :) )
Watch me grow
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Julio 1st, 2009, 2:32 am

Quote:
Cuando se crea una instancia de una sub clase que creará automáticamente un identificador para que no pare su clase por lo que tiene dos instancia en la memoria en lugar de una.


No entiendo.

Me gustaría pensar desde el alias de clase tiene una definición vacía, sería utilizando las definiciones de la no pare clase.

Creo que deberían excavar en la fuente de PHP y ver cómo las clases de trabajo bajo la capucha. :scratchhead:

¿Y por qué tiene que ser "RGBVisualRepresentation", ¿por qué no puede ser "CMYKVisualRepresentation"? ;)
Strong with this one, the sudo is.
  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de Usuario
  • Registrado: May 21, 2004
  • Mensajes: 3229
  • Loc: South Africa
  • Status: Offline

Nota Julio 1st, 2009, 2:39 am

Porque estaba asumiendo que se instanciar la clase en el contexto de renderizado de gráficos en un equipo que se rgb, si se trata de una impresora aplicación puede entonces llamar cmyk cosita

El funcionamiento es eficaz, crea una instancia de color, ya que entonces se ha extendido de color que necesita para crear un ejemplo de ello. La memoria de los punteros que apuntan a Color para el método / función de llamadas. A fin de que inicialmente dijo, sería un indicador de bajo coste, pero no tan baja como la definición de la clase de color como una sola clase (no la ampliación de otra clase)
Watch me grow
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Julio 1st, 2009, 4:33 am

Por lo tanto, la definición de la misma clase dos veces con dos nombres diferentes tendría menos recursos que la ampliación de una clase utilizando una definición de la clase vacía como la ampliación? :scratchhead:

Que parece extraño, si Im que la comprensión de este derecho.
Strong with this one, the sudo is.
  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de Usuario
  • Registrado: May 21, 2004
  • Mensajes: 3229
  • Loc: South Africa
  • Status: Offline

Nota Julio 1st, 2009, 9:11 am

y pensar en ello

Podría tomar más espacio en disco, pero
Código: [ Select ]
$color = new Color() //supposing color extends colour


Bajo el capó que implícitamente crea una instancia de color, ya que va a necesitar acceso a ella. Cuando, como si no se incluía todo lo que wouldnt de crear una referencia a él :)

¿Tiene sentido?
Watch me grow
  • spork
  • Brewmaster
  • Silver Member
  • Avatar de Usuario
  • Registrado: Sep 22, 2003
  • Mensajes: 6128
  • Loc: Seattle, WA
  • Status: Online

Nota Julio 1st, 2009, 10:02 am

Usted puede pensar en casi una subclase como una envoltura alrededor de una clase base. Cada vez que cree una instancia de una subclase, un ejemplo de la clase base se debe crear con el fin de asignar espacio de almacenamiento para sus datos y para permitir el acceso a sus métodos.
The Beer Monocle. Classy.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Julio 1st, 2009, 10:02 am

Publicar Información

  • Total de mensajes en este tema: 16 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 129 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC