|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2015-07-27 13:59 UTC] laruence@php.net
[2015-07-27 14:12 UTC] laruence@php.net
[2015-07-27 15:25 UTC] php at lvht dot net
[2015-08-02 21:46 UTC] bwoebi@php.net
-Status: Open
+Status: Not a bug
[2015-08-02 21:46 UTC] bwoebi@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2026 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 06 04:00:02 2026 UTC |
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