Пространства имен PHP: эквивалент C # с использованием - PullRequest
6 голосов
/ 19 сентября 2011

Что является эквивалентом оператора C # using Name.Space;, чтобы сделать все классы этого пространства имен доступными в текущем файле? Это возможно даже с PHP?

Что бы я хотел (но не работает):

<?php
# myclass.php
namespace Namespace;
class myclass {
}
?>

<?php
# main.php
include 'myclass.php'
use Namespace;

new myclass();
?>

Ответы [ 2 ]

8 голосов
/ 19 сентября 2011

Там нет ни одного.В PHP интерпретатор не будет знать все классы, которые могут существовать (особенно из-за существования __autoload), поэтому среда выполнения может столкнуться со многими конфликтами.Имея что-то вроде этого:

use Foo\*; // Invalid code
throw new Exception();

Может быть Foo \ Exception, которое должно быть __autoload ed - PHP не может знать.

Что вы можете сделать, это импортировать подпрограммупространство имен:

use Foo\Bar;
$o = new Bar\Baz(); // Is Foo\Bar\Baz

или с псевдонимом:

use Foo\Bar as B;
$o = new B\Baz(); // Is Foo\Bar\Baz
0 голосов
/ 20 сентября 2011

Как объяснил Йоханнес или вы можете псевдонимы ваши занятия

ДЕКЛАРАЦИЯ:

namespace myNamespace;

class myClass {
    public function __toString()
    {
        return "Hello world!";
    }
}

ИСПОЛНЕНИЕ:

include 'namespace.class.php';

use myNamespace\myClass as myClass;

echo new myClass();
...