Bug #66862 [Opn]: (Sub-)Namespaces unexpected behaviour

From: Date: Sun, 09 Mar 2014 18:10:53 +0000
Subject: Bug #66862 [Opn]: (Sub-)Namespaces unexpected behaviour
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-184657@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=66862&edit=1

 ID:                 66862
 User updated by:    celestino dot diaz at gmx dot de
 Reported by:        celestino dot diaz at gmx dot de
 Summary:            (Sub-)Namespaces unexpected behaviour
 Status:             Open
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   LINUX
-PHP Version:        Irrelevant
+PHP Version:        5.5.10
 Block user comment: N
 Private report:     N

 New Comment:

changed PHP version


Previous Comments:
------------------------------------------------------------------------
[2014-03-09 13:57:09] celestino dot diaz at gmx dot de

Description:
------------
PHP v5.5.10

Namespaces have an unexpected behaviour depending on the script loading order.

Directory Structure:
Sample
|_ classA.php
|_ classB.php
|_ Subnamespace
  |_ classA.php


Test 1:
Output:
Fatal error:  Cannot use Sample\Subnamespace\classA as classA because the name is already in use in
Sample/classB.php on line 3


Test 2 (changed script oder):
Output:
Sample\classB
Sample\Subnamespace\classA
Sample\classA
Sample\classB
Sample\Subnamespace\classA


Test script:
---------------
Sample\classA.php:
<?php
namespace Sample;
class classA {}

Sample\classB.php:
<?php
namespace Sample;
use Sample\Subnamespace\classA;
class classB {
    public $classA;
    public function __construct() {
        $this->classA = new classA();
    }
}

Sample\Subnamespace\classA.php:
<?php
namespace Sample;
class classA {}


Test 1:
$a = new Sample\classA();
echo get_class($a)."\n";
$b = new Sample\classB();
echo get_class($b)."\n";
echo get_class($b->classA)."\n";


Test 2:
$b = new Sample\classB();
echo get_class($b)."\n";
echo get_class($b->classA)."\n";
$a = new Sample\classA();
echo get_class($a)."\n";
$b = new Sample\classB();
echo get_class($b)."\n";



Expected result:
----------------
Both (Test 1 & 2) should have the same output.



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=66862&edit=1


Thread (5 messages)

« previous php.bugs (#184657) next »