Edit report at http://bugs.php.net/bug.php?id=52029&edit=1
ID: 52029 Updated by: ka...@php.net Reported by: rustyj4ck at gmail dot com Summary: create_alias namespaces -Status: Assigned +Status: Open Type: Feature/Change Request Package: Class/Object related Operating System: all PHP Version: 5.3.2 -Assigned To: dmitry +Assigned To: Block user comment: N New Comment: Sorry, shouldn't have been assigned to you Dmitry ;-) Previous Comments: ------------------------------------------------------------------------ [2010-10-24 15:36:56] ka...@php.net Moving this to a feature / change request ------------------------------------------------------------------------ [2010-06-15 12:41:49] rustyj4ck at gmail dot com Then, where is expected functions? is_alias() get_alias_name() or reflection method? in fact we cant get alias name, aliasing is useless. ------------------------------------------------------------------------ [2010-06-15 09:48:06] dmi...@php.net This is an expected behaviour. An alias allows to refer to a class entry using different name but it's the same class entry. ------------------------------------------------------------------------ [2010-06-13 00:34:58] fel...@php.net Hmm, in fact the alias is created by reusing the original class entry. I.e. no copy is done, it just add a new entry to the class table using the alias name pointing to the original one. class a { } class_alias('a', 'b'); ReflectionClass::export('b'); /* Class [ <user> class a ] { ... } */ Dmitry, are actually the aliases supposed to behave in this way? (needing to be explained in the documentation wether it is right as is) ------------------------------------------------------------------------ [2010-06-09 13:08:28] rustyj4ck at gmail dot com Description: ------------ Cant create alias to class in different namespace. Created object (alias instance) return type of base class, not alias. Test script: --------------- <?php namespace tf\users {} namespace tf\core { class collection { private $_cl; function __construct() { $this->_cl = get_class($this); } function get_cl() { return $this->_cl; } } class core { private $_cl; function register($name) { $from = 'tf\\core\\collection'; $to = 'tf\\users\\' . $name; printf ("aliasing %s --> %s : %s <br/> \n", $from, $to, class_alias($from, $to)?'OK':'FAIl'); $a = new $to (); $this->_cl = get_class($a); return $a; } function get_cl() { return $this->_cl; } } } namespace { use tf\core\core; $core = new core(); $test = $core->register('test'); printf("core: %s, result: %s, get_class: %s <br/>\n", $core->get_cl(), $test->get_cl(), get_class($test)); } Expected result: ---------------- tf\users\test Actual result: -------------- aliasing tf\core\collection --> tf\users\test : OK core: tf\core\collection, result: tf\core\collection, get_class: tf\core\collection ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=52029&edit=1