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...
10
use Waredesk\Models\Product;
11
use DateTime;
12
13
class ProductMapper extends Mapper
14
{
15
6
public function map(Product $product, array $data): Product
16
{
17
6
$finalData = [];
18
6
foreach ($data as $key => $value) {
19
switch ($key) {
20
6
case 'categories':
21
6
$finalData['categories'] = (new CategoriesMapper())->map(new Categories(), $value);
22
6
break;
23
6
case 'variants':
24
6
$finalData['variants'] = (new VariantsMapper())->map(new Variants(), $value);
25
6
break;
26
6
case 'creation':
27
6
$finalData['creation'] = new DateTime($value);
28
6
break;
29
6
case 'modification':
30
6
$finalData['modification'] = new DateTime($value);
Let’s assume that you have a directory layout like this:
. |-- OtherDir | |-- Bar.php | `-- Foo.php `-- SomeDir `-- Foo.phpand let’s assume the following content of
Bar.php:If both files
OtherDir/Foo.phpandSomeDir/Foo.phpare 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.phpHowever, as
OtherDir/Foo.phpdoes 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: