downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Использование пространства имен: основы> <Определение подпространств имен
[edit] Last updated: Fri, 25 May 2012

view this page in

Описание нескольких пространств имен в одном файле

(PHP 5 >= 5.3.0)

Несколько пространств имен также можно описать в одном файле с помощью двух допустимых синтаксических конструкций.

Пример #1 Описание нескольких пространств имен, простой синтаксис

<?php
namespace MyProject;

const 
CONNECT_OK 1;
class 
Connection /* ... */ }
function 
connect() { /* ... */  }

namespace 
AnotherProject;

const 
CONNECT_OK 1;
class 
Connection /* ... */ }
function 
connect() { /* ... */  }
?>

Данный синтаксис не рекомендуется для комбинирования пространств имен в одном файле. Вместо этого рекомендуется использовать альтернативный синтаксис со скобками.

Пример #2 Описание нескольких пространств имен, синтаксис со скобками

<?php
namespace MyProject {

const 
CONNECT_OK 1;
class 
Connection /* ... */ }
function 
connect() { /* ... */  }
}

namespace 
AnotherProject {

const 
CONNECT_OK 1;
class 
Connection /* ... */ }
function 
connect() { /* ... */  }
}
?>

Настоятельно не рекомендуется при программировании комбинировать несколько пространств имен в один файл. Основным применением этому может быть объединение нескольких PHP файлов в один файл.

Для объединения кода в глобальном пространстве имен с кодом в других пространствах имен, используется только синтаксис со скобками. Глобальный код должен быть помещен в конструкцию описания пространства имен без указания имени:

Пример #3 Описание глобального и обычного пространства имен в одном файле

<?php
namespace MyProject {

const 
CONNECT_OK 1;
class 
Connection /* ... */ }
function 
connect() { /* ... */  }
}

namespace {       
// глобальный код
session_start();
$a MyProject\connect();
echo 
MyProject\Connection::start();
}
?>

PHP-код не может находиться вне скобок конструкции пространства имен, кроме начального выражения declare.

Пример #4 Описание глобального и обычного пространства имен в одном файле

<?php
declare(encoding='UTF-8');
namespace 
MyProject {

const 
CONNECT_OK 1;
class 
Connection /* ... */ }
function 
connect() { /* ... */  }
}

namespace {      
// глобальный код
session_start();
$a MyProject\connect();
echo 
MyProject\Connection::start();
}
?>



add a note add a note User Contributed Notes Описание нескольких пространств имен в одном файле
kothnok at gmail dot com 03-Nov-2011 10:59
"use" statements are required to be placed after the "namespace my\space" but before the "{".
e.g.

<?php
namespace foobar
;
use
myspaceMyClass;
{

 
// place code here

} // end of namespace foo\bar

namespace anotherbar;
use
myspaceMyClass;
use
myspaceAnotherClass;
{

 
// place code here

} // end of namespace another\bar
?>
anders at ingemann dot de 20-Mar-2010 11:16
Apparently you will have to define namespaces using curly brackets enclosing theclasses, if you want doxygen to pick them up.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites