Как правильно подключить файл с Namespace в PHP

Рейтинг: 0Ответов: 1Опубликовано: 02.03.2015

Не совсем разобрался с namespace в php. Допустим, есть два файла:

// File1
<?

namespace Db;
class Db {

}
?>

// File2
<?
namespace Data;
class Data {
}
?>

Если я хочу создать объект Db в классе Data, какие namespace я должен указать? Проинклудит ли php автоматически класс Db?

В файле File2 я указал:

use Db;

Что выдало мне ошибку: Class 'Db' not found

Ответы

▲ 3Принят

Иерархия:

foo
 |-Foo.php
bar
 |-Bar.php    
-index.php

Foo.php

namespace foo;

class Foo 
{
    public function className()
    {
        return __CLASS__;
    }
}

Bar.php

namespace bar;

class Bar 
{
    public function className()
    {
        return __CLASS__;
    }
}

index.php

spl_autoload_register(function ($class) {
    $base_dir = __DIR__;
    $file = $base_dir . DIRECTORY_SEPARATOR . str_replace('\\', DIRECTORY_SEPARATOR, $class) . '.php';
    if (!file_exists($file)) {
        throw new \Exception("File is not found: {$file}");
    }
    require $file;
});

$foo = new \foo\Foo;
$bar = new \bar\Bar;

echo $foo->className(); // display: "foo\Foo" 
echo $bar->className(); // display: "bar\Bar"