downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

class_exists> <call_user_method
Last updated: Fri, 20 May 2011

view this page in

class_alias

(PHP 5 >= 5.3.0)

class_aliasCrea un alias para una clase

Descripción

bool class_alias ([ string $original [, string $alias ]] )

Crea un alias dado por alias basado en la clase definida original. La clase apodada es exactamente la misma que la clase original.

Parámetros

original

La clase original.

alias

El nombre del alias para la clase.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ejemplos

Example #1 Ejemplo de class_alias()

<?php

class foo { }

class_alias('foo''bar');

$a = new foo;
$b = new bar;

// los objetos son los mismos
var_dump($a == $b$a === $b);
var_dump($a instanceof $b);

// las clases son las mismas
var_dump($a instanceof foo);
var_dump($a instanceof bar);

var_dump($b instanceof foo);
var_dump($b instanceof bar);

?>

El resultado del ejemplo sería:

bool(true)
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)

Ver también



class_exists> <call_user_method
Last updated: Fri, 20 May 2011
 
add a note add a note User Contributed Notes class_alias
nicolas dot grekas+php at gmail dot com 31-Dec-2010 09:09
At first, you might wonder that:
<?php class A {}; class_alias('A', 'B'); ?>

is equivalent to:
<?php class A {}; class B extends A {}; ?>

BUT when derivation creates a new class name - that means, you can then instantiate a new kind of objects - aliasing is just what it says: a synonym, so objects instantiated with the aliased name are of the exact same kind of objects instantiated with the non-aliased name.

See this code for example:
<?php
class A {};
class
B1 extends A {};
class_alias('A', 'B2');

$b1 = new B1; echo get_class($b1); // prints B1
$b2 = new B2; echo get_class($b2); // prints A !
?>
nicolas dot grekas+php at gmail dot com 30-Dec-2010 10:41
class_alias also works for interfaces!

<?php
interface foo {}
class_alias('foo', 'bar');
echo
interface_exists('bar') ? 'yes!' : 'no'; // prints yes!
?>
paul [dot] kotets [at] gmail [dot] com 03-Sep-2009 10:43
This function will appear in PHP 5.3 (at least I can use it with PHP 5.3, build Aug 7 2009 08:21:14)
For older versions of PHP I wrote the next function:

<?php
if (!function_exists('class_alias')) {
    function
class_alias($original, $alias) {
        eval(
'abstract class ' . $alias . ' extends ' . $original . ' {}');
    }
}
?>

Keyword 'abstract' is used for classes, which defines abstract methods.
This function is used in autoload purposes (when I extend classes), so abstract keyword doesn't broke anything for me.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites