Bug #70135 [Opn]: class alias conflict with class defined in another file with the same namespace
| From: | laruence@php.net | Date: | Mon, 27 Jul 2015 14:00:00 +0000 |
| Subject: | Bug #70135 [Opn]: class alias conflict with class defined in another file with the same namespace | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-194751@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=70135&edit=1
ID: 70135
Updated by: laruence@php.net
Reported by: php at lvht dot net
Summary: class alias conflict with class defined in another
file with the same namespace
Status: Open
Type: Bug
Package: Scripting Engine problem
Operating System: linux & mac os x
PHP Version: 5.6.11
Block user comment: N
Private report: N
New Comment:
see also : http://3v4l.org/Ootud
Previous Comments:
------------------------------------------------------------------------
[2015-07-25 16:08:30] php at lvht dot net
Description:
------------
In one file with a namespace(eg, Lv), we define a class named Foo.
In another with a subnamespace(eg, Lv\Common), we define another class with the *same* name Foo.
In the third file with the same namespace(Lv), we first "import" Lv\Common\Foo using
"use Lv\Common\Foo" and then define a class named Bar that extends Foo(the Lv\Common\Foo).
In a test file, we first make an instance of Lv\Foo, and then try to make an instance of Lv\Bar,
which will failed with a fatal error.
Test script:
---------------
We need four files in the same directory.
1. In Foo.php,
<?php namespace Lv;
class Foo{}
2. In CommonFoo.php,
<?php namespace Lv\Common;
class Foo{}
3. In Bar.php,
<?php namespace Lv;
require 'CommonFoo.php';
use Lv\Common\Foo;
class Bar extends Foo {}
4. Finally, in app.php,
<?php
require 'Foo.php';
$foo = new Lv\Foo;
require 'Bar.php';
$bar = new Lv\Bar; # error will trigged by this line
Just run php app.php, you will see a fatal error.
Expected result:
----------------
The app.php should run without any error.
Actual result:
--------------
The error given,
PHP Fatal error: Cannot use Lv\Common\Foo as Foo because the name is already in use in ...Bar.php
on line 3
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=70135&edit=1