Bug #70135 [Opn]: class alias conflict with class defined in another file with the same namespace

From: 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

« previous php.bugs (#194751) next »