Я не думаю, что вы можете делать такие вещи, используя ::
;но это должно работать, если вы используете разделитель пространства имен: \
Я только что протестировал с PHP PHP 5.3.5 - и использование ::
действительно дает мне ошибку.
Использование \, с другой стороны, прекрасно работает (см. Пример ниже) .
Например, находясь в глобальном пространстве имен (вне любогоопределенное пространство имен) вы можете определить класс SomeClass
:
namespace {
class SomeClass
{
public function method() {
var_dump("child: " . __METHOD__);
}
}
$obj = new SomeNamespace\SomeClass();
$obj->method();
}
И в конкретном пространстве имен с именем SomeNamespace
в моем примере вы можете определить класс SomeClass
, которыйрасширил бы класс из глобального пространства имен - которое доступно как \SomeClass
:
namespace SomeNamespace {
class SomeClass extends \SomeClass
{
public function method() {
var_dump("parent: " . __METHOD__);
}
}
}
Sidenote: Здесь я использую синтаксис в скобках , так как я помещаю две части кода в один файл (см. Пример 3 на этой странице руководства) - но он должен работать одинаково с несколькими файлами.
Обратите внимание, что в первых альфа-версиях PHP 5.3 разделитель пространства имен был не \
, а ::
Итак, если вы используетеPHP 5.3 alpha 1 или 2 (и, возможно, 3, не уверен, что \
был выбран до или после alpha 3) , использование ::
может работать.
(Конечно, вы не должны использовать альфа-версию - особенно если учесть, что уже два года существуют стабильные версии PHP 5.3)