and let’s assume the following content of Bar.php:
// Bar.phpnamespaceOtherDir;useSomeDir\Foo;// This now conflicts the class OtherDir\Foo
If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the
same runtime, you will see a PHP error such as the following:
PHP Fatal error: Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php
However, as OtherDir/Foo.php does not necessarily have to be loaded and the
error is only triggered if it is loaded before OtherDir/Bar.php, this problem
might go unnoticed for a while. In order to prevent this error from surfacing,
you must import the namespace with a different alias:
// Bar.phpnamespaceOtherDir;useSomeDir\FooasSomeDirFoo;// There is no conflict anymore.
Loading history...
7
use EmptyIterator;
8
use PHPUnit_Framework_TestCase;
9
10
11
class CachingIteratorTest extends PHPUnit_Framework_TestCase {
12
13
/** @test */
14
public function testMainFunctionality()
15
{
16
$count = 0;
17
$it = new CachingIterator(new MapIterator(new ArrayIterator(range(0, 10)), function($i) use (&$count) { $count += 1; return $i; }));
18
19
$it->rewind();
20
$this->assertEquals(0, $count);
21
$it->valid();
22
$this->assertEquals(0, $it->current());
23
24
$it->valid();
25
$it->next();
26
$this->assertEquals(1, $it->current());
27
$this->assertEquals(1, $it->current());
28
$this->assertEquals(1, $it->current());
29
30
$it->valid();
31
$it->next();
32
$this->assertEquals(2, $it->current());
33
34
$this->assertEquals(3, $count);
35
}
36
37
/** @test */
38
public function testValidMethod()
39
{
40
foreach(new CachingIterator(new EmptyIterator()) as $v) {
Let’s assume that you have a directory layout like this:
and let’s assume the following content of
Bar.php
:If both files
OtherDir/Foo.php
andSomeDir/Foo.php
are loaded in the same runtime, you will see a PHP error such as the following:PHP Fatal error: Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php
However, as
OtherDir/Foo.php
does not necessarily have to be loaded and the error is only triggered if it is loaded beforeOtherDir/Bar.php
, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias: