Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Ρ€Ρ‘Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² синтаксиса Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅:

namespace Foo \ Bar \ subnamespace ;

const FOO = 1 ;
function foo () <>
class foo
<
static function staticmethod () <>
>
?>

namespace Foo \ Bar ;
include ‘file1.php’ ;

const FOO = 2 ;
function foo () <>
class foo
<
static function staticmethod () <>
>

/* НСполныС ΠΈΠΌΠ΅Π½Π° */
foo (); // опрСдСляСтся ΠΊΠ°ΠΊ функция Foo\Bar\foo
foo :: staticmethod (); // опрСдСляСтся ΠΊΠ°ΠΊ класс Foo\Bar\foo с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ staticmethod
echo FOO ; // опрСдСляСтся ΠΊΠ°ΠΊ константа Foo\Bar\FOO

/* ΠŸΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° */
subnamespace \ foo (); // опрСдСляСтся ΠΊΠ°ΠΊ функция Foo\Bar\subnamespace\foo
subnamespace \ foo :: staticmethod (); // опрСдСляСтся ΠΊΠ°ΠΊ класс Foo\Bar\subnamespace\foo
// c ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ staticmethod
echo subnamespace \ FOO ; // опрСдСляСтся ΠΊΠ°ΠΊ константа Foo\Bar\subnamespace\FOO

/* ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° */
\ Foo \ Bar \ foo (); // опрСдСляСтся ΠΊΠ°ΠΊ функция Foo\Bar\foo
\ Foo \ Bar \ foo :: staticmethod (); // опрСдСляСтся ΠΊΠ°ΠΊ класс Foo\Bar\foo с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ staticmethod
echo \ Foo \ Bar \ FOO ; // опрСдСляСтся ΠΊΠ°ΠΊ константа Foo\Bar\FOO
?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 Доступ ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ классам, функциям ΠΈ константам ΠΈΠ· пространства ΠΈΠΌΡ‘Π½

function strlen () <>
const INI_ALL = 3 ;
class Exception <>

$a = \ strlen ( ‘hi’ ); // Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ strlen
$b = \ INI_ALL ; // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊ глобальной константС INI_ALL
$c = new \ Exception ( ‘error’ ); // Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ экзСмпляр глобального класса Exception
?>

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ Π² PHP, Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌ.ΠΏΠ΅Ρ€.: Π― Π² курсС, Ρ‡Ρ‚ΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ вСрсия PHP β€” 5.5, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ мудрая ΠΊΠ½ΠΈΠ³Π° ΠΌΠ°Π½ΡƒΠ°Π». Но ΠΌΠ½Π΅ показалось интСрСсным, Ρ‚ΠΎ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΡ€ прСподносит namespace Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΈΠ· Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ постигаСт Π°Π·Ρ‹ (Π΄Π° ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Π΅ΡΡ‚ΡŒ Π½Π΅ΠΌΠ°Π»ΠΎ Π±ΠΎΡ€ΠΎΠ΄Π°Ρ‚Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ²ΡˆΠΈΡ…ΡΡ Π½Π° PHP 5.2), ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ½ΡƒΡ‚ΡŒΡΡ. Π₯ΠΎΠ΄ΠΎΡ€.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½

Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ, ΠΎΡ‡Π΅Π½ΡŒ простой класс:

НичСго особСнно, ΠΊΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΈ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, просто сдСлайтС Ρ‚Π°ΠΊ:

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΈΠ·Π²ΠΈΠ½ΠΈ. Π‘ΡƒΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± этом классС, ΠΊΠ°ΠΊ находящимся Π² глобальном пространствС ΠΈΠΌΡ‘Π½.Π― Π½Π΅ совсСм ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½, Π½ΠΎ Π½Π° ΠΌΠΎΠΉ взгляд это Π·Π²ΡƒΡ‡ΠΈΡ‚ Π²ΠΏΠΎΠ»Π½Π΅ умСстно. БобствСнно, это Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ класс Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ, просто ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ класс.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ использованиС пространств ΠΈΠΌΡ‘Π½

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π­Π΄Π΄Π°Ρ€Π΄Π°, рядом с Ρ‚Π΅ΠΌ, Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ.
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹
Π—Π΄Π΅ΡΡŒ Ρƒ нас ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ класс с ΠΎΠ΄Π½ΠΈΠΌ нСбольшим ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° пространства ΠΈΠΌΠ΅Π½. Π‘Ρ‚Ρ€ΠΎΠΊΠ° namespace Stark; Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ PHP Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π² пространствС ΠΈΠΌΠ΅Π½ Stark ΠΈ любой ΠΊΠΎΠ΄ (объявлСниС классов, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ‚.Π΄.) Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ.

Π˜Ρ‚Π°ΠΊ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π­Π΄Π΄Π°, Ссли Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ это Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π’ΠΎ Π½Π΅Ρ‚, это Π½Π΅ Ρ‚Π°ΠΊ. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ экзСмпляр класса ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ создали Ρ€Π°Π½Π΅Π΅. НС Ρ‚ΠΎΡ‚, Π² пространствС ΠΈΠΌΠ΅Π½ Stark. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр Π­Π΄Π΄Π°Ρ€Π΄Π° Π‘Ρ‚Π°Ρ€ΠΊΠ°.

Для создания экзСмпляра класса Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚ΡŒ имя класса прСфиксом ΠΈΠ· названия пространства ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ класс ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚, Π° Π² качСствС раздСлитСля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΊΠΎΡΡƒΡŽ Ρ‡Π΅Ρ€Ρ‚Ρƒ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ экзСмпляр ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠ³ΠΎ класса, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½. Π Π°Π·Π²Π΅ это Π½Π΅ волшСбно?

К слову ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, пространства ΠΈΠΌΡ‘Π½ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ, сколько потрСбуСтся. НапримСр:

ВСория ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ я сказал Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ PHP всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ пространства ΠΈΠΌΠ΅Π½. Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° это Π² дСйствии:

Π”ΠΎΠ±Π°Π²ΠΈΠ² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ пространства ΠΈΠΌΡ‘Π½, ΠΌΡ‹ Π΄Π°Π»ΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ PHP, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ находимся Π² пространствС ΠΈΠΌΡ‘Π½ Stark. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π½Π΅ΠΌ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ класс Eddard, Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ ΠΌΡ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ. Π’ΠΈΠ΄ΠΈΡ‚Π΅ β€” всС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

БСйчас, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ пространство ΠΈΠΌΡ‘Π½, Ρƒ нас Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΠ΄Π½Π° малСнькая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π•ΡΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ, ΠΎ Ρ‡Π΅ΠΌ я? А ΠΊΠ°ΠΊ Π½Π°ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ наш ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ класс Eddard? Ну Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² глобальном пространствС?

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ Π² PHP Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΡŽΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ β€” просто Π΄ΠΎΠ±Π°Π²ΠΈΠ² \ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ класса.

Видя Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ слСш PHP ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ namespace ΠΈ создаСт экзСмпляр Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π½Π°ΠΌ класса.

А сСйчас Π²ΠΊΠ»ΡŽΡ‡ΠΈ своС Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ класс ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½, Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ Tully\Edmure. БСйчас Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ пространства Stark. И ΠΊΠ°ΠΊ Π½Π°ΠΌ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ?
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹

И снова Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слСш, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ глобальной видимости, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса Π² пространствС Tully.

Π’ΠΎΠΎΠ±Ρ‰Π΅, ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ Π½Π° классы ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… пространств ΠΈΠΌΠ΅Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Но ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ярлык, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим:

А, Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ малСнький Ρ‚Ρ€ΡŽΠΊ! ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π°Ρ‚ΡŒ нашим ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ классам ΠΏΡ€ΠΎΠ·Π²ΠΈΡ‰Π°:

Давая Daenerys ΠΈΠ· пространства Dothraki ΠΏΡ€ΠΎΠ·Π²ΠΈΡ‰Π΅ Khaleesi, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π° класса Daenerys. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‚Π°ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ классы Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½Π°ΠΌ Π² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ нашСго ΠΊΠΎΠ΄Π°. ΠŸΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅, я ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ.

Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, я Ρ…ΠΎΡ‡Ρƒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. МнС Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΉ ΠΊΠΎΠ΄, это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ! Π‘Π΅Π΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° классов Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Π»ΠΈ с собствСнным ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ уТасно Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ я Ρ€Π΅ΡˆΡƒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ:

Π—Π΄Π΅ΡΡŒ я использовал своС имя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΌΠ½Π΅, ΠΈ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ свой ​​код ΠΎΡ‚ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ я создал структуру классов Π² соотвСтствии с ΠΈΡ… ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ.

Начав ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ composer, Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пространства ΠΈΠΌΡ‘Π½ для упрощСния Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠ΄Π°. Π― Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° этот ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ.

НСдостатки

По ΠΏΡ€Π°Π²Π΄Π΅ говоря, я Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΡŽ сСбя Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚Ρ‹ΠΌ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°Π·Π²Π°Π» этот ΠΏΠΎΠ΄Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ «НСдостатки». Π’ΠΎ, ΠΎ Ρ‡Π΅ΠΌ я ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Π½Π° самом Π΄Π΅Π»Π΅ ошибкой Π½Π΅ являСтся.

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» пространств ΠΈΠΌΡ‘Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈ ΠΏΡ€ΠΈ этом языки ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» для взаимодСйствия с пространствами ΠΈΠΌΡ‘Π½.

Π’ Java, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько классов Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ пространство ΠΈΠΌΠ΅Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°. Π’ Java, import являСтся Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ use ΠΈ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ пространства ΠΈΠΌΠ΅Π½ (ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹). Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’ PHP Ρƒ вас Ρ‚Π°ΠΊ Π½Π΅ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅. БобствСнно, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я извиняюсь? Π˜Π΄ΠΈΡ‚Π΅ ΠΈ ΠΆΠ°Π»ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² PHP, Π½ΠΎ я ΠΏΡ€ΠΎΡˆΡƒ вас β€” Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π΅ΠΆΠ»ΠΈΠ²Ρ‹. Они сдСлали ΠΌΠ½ΠΎΠ³ΠΎ интСрСсного Π² послСднСС врСмя.

Π’ΠΎΡ‚ изящный Ρ‚Ρ€ΡŽΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ³Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΎΠ·Π²ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ структура классов ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ подпространства ΠΈ Π΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ псСвдоним.
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹
Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ использовании большого числа классов. Π”ΠΎΠ±Ρ€Π° всСм!

ВсС поТСлания ΠΈ прСдлоТСния с Ρ€Π°Π΄ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠΌΡƒ Π² Π»ΠΈΡ‡ΠΊΡƒ, спасибо.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ Π² PHP

На Ρ…Π°Π±Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ΠΌΠ°Π»ΠΎ статСй ΠΎ пространствах ΠΈΠΌΠ΅Π½ Π² PHP, Π½ΠΎ ΠΌΠ½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»Π° ΠΈΠΌΠ΅Π½Π½ΠΎ эта, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅ΠΉ я Ρ…ΠΎΡ‡Ρƒ подСлится. НавСрняка найдутся Ρ‚Π΅, ΠΊΠΎΠΌΡƒ этот ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.

ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ пространств ΠΈΠΌΠ΅Π½ Π² PHP Π±Ρ‹Π» тСрнистым. Но ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊ языку Π² вСрсии PHP 5.3, ΠΈ структура PHP ΠΊΠΎΠ΄Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»Π°ΡΡŒ с Ρ‚Π΅Ρ… ΠΏΠΎΡ€. Но ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π°ΠΌ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ пространства ΠΈΠΌΠ΅Π½?

«НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слСш, ΠΊΠΎΠ³Π΄Π° Π’Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅ имя пространства ΠΈΠΌΠ΅Π½ Π² Π²ΠΈΠ΄Π΅ строки!Β»

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС пространство ΠΈΠΌΠ΅Π½, ΠΊΠ°ΠΊ ящик, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ всС Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ: ΠΊΠ°Ρ€Π°Π½Π΄Π°Ρˆ, Π»ΠΈΠ½Π΅ΠΉΠΊΡƒ, кусок Π±ΡƒΠΌΠ°Π³ΠΈ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π­Ρ‚ΠΎ Π’Π°ΡˆΠΈ Π²Π΅Ρ‰ΠΈ. ΠŸΡ€ΡΠΌΠΎ ΠΏΠΎΠ΄ вашим ящиком, располагаСтся Π΅Ρ‰Π΅ Ρ‡Π΅ΠΉ-Ρ‚ΠΎ ящик, ΠΈ Π΅Π³ΠΎ хозяин Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ‚Π΅ ΠΆΠ΅ Π²Π΅Ρ‰ΠΈ Π² Π½Π΅ΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ использования ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, Π’Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ящики Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ стало ясно, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚.

Π Π°Π½Π΅Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСфиксы с Π½ΠΈΠΆΠ½ΠΈΠΌ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ Π² своих классах, функциях ΠΈ константах для раздСлСния ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ эквивалСнтно Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои Π²Π΅Ρ‰ΠΈ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π² ΠΎΠ΄Π½ΠΎΠΌ большом ящикС. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Ρ…ΠΎΡ‚ΡŒ какая-Ρ‚ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ нСэффСктивно.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½, ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚! Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, класс, интСрфСйс ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ константу Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… пространствах ΠΈΠΌΠ΅Π½, Π½Π΅ получая Ρ„Π°Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ошибок. По своСй сути, пространство ΠΈΠΌΠ΅Π½ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ иСрархичСски ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° содСрТащиС ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ PHP ΠΊΠΎΠ΄.

Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΈΡ…!

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π’Ρ‹ косвСнно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ пространства ΠΈΠΌΠ΅Π½; Начиная с PHP 5.3, всС опрСдСлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ пространствах ΠΈΠΌΠ΅Π½, ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ΄ глобальноС пространство ΠΈΠΌΠ΅Π½.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ использованиС пространства ΠΈΠΌΠ΅Π½ Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.
Π’Π°Ρˆ PHP скрипт Π±ΡƒΠ΄Π΅Ρ‚ прСкрасно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· Π½ΠΈΡ…, ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ скоро измСнится.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ пространства ΠΈΠΌΠ΅Π½

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько пространств ΠΈΠΌΠ΅Π½ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅ пространство ΠΈΠΌΠ΅Π½ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²; процСсс ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² автоматичСски ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ ΠΈΡ…. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° кодирования, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ количСство ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ пространства ΠΈΠΌΠ΅Π½ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с классами.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΈ ввСсти большС гибкости ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹. На самом Π΄Π΅Π»Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈ опуская Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки Π’Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ваш ΠΊΠΎΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡ΠΈΡ‰Π΅ β€” Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ нСобходимости, Π΄Π΅Π»Π°Ρ‚ΡŒ отступ(Ρ‚Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ) для Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½

Для обСспСчСния гибкости, Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ пространства ΠΈΠΌΠ΅Π½ Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…. Π­Ρ‚ΠΎ способствуСт ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ позволяСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ стандарту PSR-4.

PHP ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш, Π² качСствС раздСлитСля пространства ΠΈΠΌΠ΅Π½.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ namespace Ρ‹ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚: Π² RFC, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ пространства ΠΈΠΌΠ΅Π½ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, рассматривался Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования смайлика.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… пространств ΠΈΠΌΠ΅Π½, сколько Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ подпространства ΠΈΠΌΠ΅Π½ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π° Π½Π΅ поддСрТиваСтся. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ: «ОбъявлСния пространств ΠΈΠΌΠ΅Π½ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ (Namespace declarations cannot be nested)Β».

Π’Ρ‹Π·ΠΎΠ² ΠΊΠΎΠ΄Π° ΠΈΠ· пространства ΠΈΠΌΠ΅Π½

Если Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ константы ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… пространств ΠΈΠΌΠ΅Π½, Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш. БущСствуСт Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π½ΠΈ пространства ΠΈΠΌΠ΅Π½:

НСполноС имя

Π­Ρ‚ΠΎ имя класса, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ константы, Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π² сСбя ссылку ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ пространству ΠΈΠΌΡ‘Π½. Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с пространством ΠΈΠΌΠ΅Π½, это привычная Ρ‚ΠΎΡ‡ΠΊΠ° зрСния.

ПолноС имя

Π’Π°ΠΊ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ доступ ΠΊ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ подпространства ΠΈΠΌΠ΅Π½; раздСляСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ слэшСм.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ: Β«Fatal error: Class ‘MyProject\Database\MyProject\FileAccess\Input’ not foundΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ MyProject\FileAccess\Input Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ пространству ΠΈΠΌΠ΅Π½ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π’Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ.

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ имя

ΠŸΠΎΠ»Π½Ρ‹Π΅ ΠΈ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ пространству ΠΈΠΌΠ΅Π½ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π’Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² настоящСС врСмя. Они ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для опрСдСлСния доступа Π½Π° этом ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΠ»ΠΈ Π½Ρ‹Ρ€ΡΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΆΠ΅ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ пространства ΠΈΠΌΠ΅Π½.

Если Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, классу ΠΈΠ»ΠΈ константС находящимся Π½Π° Π±ΠΎΠ»Π΅Π΅ высоком ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ, Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя β€” Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ, Π° Π½Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ. Π’Ρ‹Π·ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ слэша. Π­Ρ‚ΠΎ позволяСт PHP ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот Π²Ρ‹Π·ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ осущСствлСн ΠΈΠ· глобального пространства, Π° Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π’Π°ΡˆΠ΅Π³ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ полоТСния.

Нам Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ PHP. НСполныС ΠΈΠΌΠ΅Π½Π° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ констант Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π² глобальном пространствС ΠΈΠΌΠ΅Π½, Ссли ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ пространствС ΠΈΠΌΠ΅Π½.

Зная это, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ PHP, ΠΏΡ€ΠΈ этом имСя Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (ΠΈΠ»ΠΈ константу).

ДинамичСскиС Π²Ρ‹Π·ΠΎΠ²Ρ‹

PHP β€” динамичСский язык программирования; Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ этот Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» для Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠ΄Π° ΠΈΠ· пространства ΠΈΠΌΡ‘Π½. Π­Ρ‚ΠΎ, ΠΏΠΎ сущСству Ρ‚ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ использованиС динамичСского ΠΈΠΌΠ΅Π½ΠΈ класса ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ динамичСского Ρ„Π°ΠΉΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для хранСния Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π½ PHP ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅ ΠΆΠ΅ мСтасимволы Π² строках. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слСш, ΠΊΠΎΠ³Π΄Π° Π’Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅ имя пространства ΠΈΠΌΠ΅Π½ Π² Π²ΠΈΠ΄Π΅ строки!

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово namespace

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово namespace ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для опрСдСлСния пространства ΠΈΠΌΠ΅Π½, ΠΎΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для Π²Ρ‹Π·ΠΎΠ²Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ пространствС ΠΈΠΌΠ΅Π½, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ слову self для классов.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° __NAMESPACE__

Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово self Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано для опрСдСлСния ΠΈΠΌΠ΅Π½ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ класса, Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово namespace Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ пространства ΠΈΠΌΠ΅Π½. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ константу __NAMESPACE__

Π­Ρ‚Π° константа являСтся вСсьма ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π² Π½Π°Ρ‡Π°Π»Π΅ изучСния пространства ΠΈΠΌΠ΅Π½; Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ это строка, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована Π² сочСтании с динамичСскими Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°, рассмотрСнныС Π²Ρ‹ΡˆΠ΅.

Π˜ΠΌΠΏΠΎΡ€Ρ‚ ΠΈΠ»ΠΈ созданиС псСвдонима ΠΈΠΌΠ΅Π½ΠΈ

Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² пространствах ΠΈΠΌΠ΅Π½

ВаТная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ пространств ΠΈΠΌΠ΅Π½ Π² PHP β€” это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° внСшнСС Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ имя ΠΏΠΎ псСвдониму, ΠΈΠ»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Как это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ имя ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ привязаны ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΌΡƒ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ придСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ имя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ псСвдонима ΠΈΠ»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ Π² глобальном. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ являСтся нСдопустимым синтаксисом (invalid syntax).

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ, являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ присвоСния псСвдонима с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ классы, ΠΊΠ°ΠΊ Exception. ΠŸΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅, Π²Π°ΠΌ Π½Π΅ придСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ имя.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для ΠΈΠΌΠ΅Π½ Π² пространствС ΠΈΠΌΠ΅Π½ Π½Π΅Ρ‚ нСобходимости Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ слСшС ΠΈ Π΅Π³ΠΎ присутствиС Ρ‚Π°ΠΌ Π½Π΅ рСкомСндуСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠΌΠ΅Π½Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌΠΈ ΠΈ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ пространства ΠΈΠΌΠ΅Π½.

Π₯отя Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° динамичСского Π²Ρ‹Π·ΠΎΠ²Π° пространства ΠΈΠΌΠ΅Π½, динамичСский ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π½Π΅ поддСрТиваСтся.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£Ρ€ΠΎΠΊ β„–53. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½

Π­Ρ‚ΠΎΡ‚ ΡƒΡ€ΠΎΠΊ являСтся ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡƒΡ€ΠΎΠΊΠ° β„–24.

ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΈΠΌΠ΅Π½

ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΈΠΌΠ΅Π½ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° находятся Π² ΠΎΠ΄Π½ΠΎΠΉ области видимости, ΠΈ компилятор Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· этих Π΄Π²ΡƒΡ… слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ситуации. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΈΠ»ΠΈ Π»ΠΈΠ½ΠΊΠ΅Ρ€ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ Π½ΠΈΡ… нСдостаточно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ…, количСство ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ увСличиваСтся, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, увСличиваСтся ΠΈ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ возникновСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°. boo.h ΠΈ doo.h β€” это Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ с функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

Если boo.h ΠΈ doo.h ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ всё ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ Π±Π΅Π· ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ². Однако, соСдинив ΠΈΡ… Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, Π² ΠΎΠ΄Π½Ρƒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости (Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ), Π° это, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρƒ ΠΈΠΌΠ΅Π½. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, компилятор выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² язык Π‘++ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ, ΠΊΠ°ΠΊ пространства ΠΈΠΌΠ΅Π½.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½?

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ опрСдСляСт ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ гарантируСтся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ всСх ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ². По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² глобальном пространствС ΠΈΠΌΠ΅Π½. НапримСр:

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ пСрСмСнная g_z ΠΈ функция boo() ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² глобальном пространствС ΠΈΠΌΠ΅Π½.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅, ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² boo.h ΠΈ doo.h ΠΎΠ±Π΅ вСрсии doOperation() Π±Ρ‹Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² глобальноС пространство ΠΈΠΌΠ΅Π½, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ, собствСнно, ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΈΠΌΠ΅Π½.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуаций, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° нСзависимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΈ совмСстном использовании, язык C++ позволяСт ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ собствСнныС пространства ΠΈΠΌΠ΅Π½ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово namespace. Всё, Ρ‡Ρ‚ΠΎ объявлСно Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½, β€” ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этому пространству ΠΈΠΌΠ΅Π½ (Π° Π½Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌΡƒ).

ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π½ΠΎ ΡƒΠΆΠ΅ с использованиСм namespace:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ошибка:

C:\VCProjects\Test.cpp(15) : error C2065: ‘doOperation’ : undeclared identifier

Π‘Π»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ doOperation(), компилятор заглянул Π² глобальноС пространство ΠΈΠΌΠ΅Π½ Π² поисках опрСдСлСния doOperation(). Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΡˆΠΈΡ… вСрсий doOperation() Π½Π΅ находится Π² глобальном пространствС ΠΈΠΌΠ΅Π½, компилятор Π½Π΅ смог Π½Π°ΠΉΡ‚ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ doOperation() Π²ΠΎΠΎΠ±Ρ‰Π΅!

БущСствуСт Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… способа ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ компилятору, ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ doOperation() слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ: Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ области видимости ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ using-стСйтмСнтов (ΠΎ Π½ΠΈΡ… ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅).

Доступ ΠΊ пространству ΠΈΠΌΠ΅Π½ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ области видимости (::)

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ компилятору ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½ β€” это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ области видимости ( :: ) ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ.

НапримСр, сообщим компилятору ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ doOperation() ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ Boo :

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ (C++)

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ объявлСниС пространства ΠΈΠΌΠ΅Π½ ΠΈ продСмонстрированы Ρ‚Ρ€ΠΈ способа доступа ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ пространства ΠΈΠΌΠ΅Π½ ΠΈΠ· ΠΊΠΎΠ΄Π° Π·Π° Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ.

ИспользованиС полного имСни:

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΎΠ΄ΠΈΠ½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ объявлСниС using:

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости всС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ пространства ΠΈΠΌΠ΅Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ using:

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using

using Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΈΠΌΠ΅Π½Π° Π² namespace для использования Π±Π΅Π· using Π² качСствС явного ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. ИспользованиС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using Π² Ρ„Π°ΠΉΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Ρ‚. Π΅. *. cpp) ΠΏΡ€ΠΈ использовании Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π² пространствС ΠΈΠΌΠ΅Π½; Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, рассмотритС использованиС объявлСния using, Ρ‡Ρ‚ΠΎΠ±Ρ‹ привСсти эти ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π° Π½Π΅ всС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² пространствС ΠΈΠΌΠ΅Π½. Если локальная пСрСмСнная ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ имя, ΠΊΠ°ΠΊ ΠΈ пСрСмСнная пространства ΠΈΠΌΠ΅Π½, Ρ‚ΠΎ пСрСмСнная пространства ΠΈΠΌΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ скрытой. Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ пространства ΠΈΠΌΠ΅Π½ с Ρ‚Π΅ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, являСтся ошибкой.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ using ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ CPP-Ρ„Π°ΠΉΠ»Π° (Π² области видимости Ρ„Π°ΠΉΠ»Π°) ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΡŒ опрСдСлСния класса ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π‘Π΅Π· особой нСобходимости Π½Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΠΉΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² (*.h), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ любой Ρ„Π°ΠΉΠ», содСрТащий этот Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ всС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ пространства ΠΈΠΌΠ΅Π½ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ скрытиС ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ. Π’ Ρ„Π°ΠΉΠ»Π°Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°. Если эти ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ слишком Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ псСвдоним пространства ΠΈΠΌΠ΅Π½ для ΠΈΡ… сокращСния. (Π‘ΠΌ. Π½ΠΈΠΆΠ΅.)

ОбъявлСниС пространств ΠΈΠΌΠ΅Π½ ΠΈ ΠΈΡ… Ρ‡Π»Π΅Π½ΠΎΠ²

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, пространство ΠΈΠΌΠ΅Π½ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°. Если Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ находятся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, опрСдСляйтС ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² контосодата. cpp Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя, Π΄Π°ΠΆΠ΅ Ссли ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ using Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„Π°ΠΉΠ»Π°:

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объявлСно Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π»ΠΎΠΊΠ°Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ соСдинит вмСстС всС части Π²ΠΎ врСмя ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ пространство ΠΈΠΌΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС Ρ‡Π»Π΅Π½Ρ‹, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²ΠΎ всСх частях. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ этого являСтся пространство ΠΈΠΌΠ΅Π½ std, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅.

Π§Π»Π΅Π½Ρ‹ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π·Π° Π΅Π³ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ, Ссли ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΏΡƒΡ‚Π΅ΠΌ явной ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ опрСдСляСмого пространства ΠΈΠΌΠ΅Π½. Однако ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ послС Ρ‚ΠΎΡ‡ΠΊΠΈ объявлСния Π² пространствС ΠΈΠΌΠ΅Π½, ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅ΠΌ Ρ‚ΠΎ пространство ΠΈΠΌΠ΅Π½, Π³Π΄Π΅ находится объявлСниС. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π­Ρ‚Π° ошибка ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρ‡Π»Π΅Π½Ρ‹ пространства ΠΈΠΌΠ΅Π½ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ эти Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ std

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ пространства ΠΈΠΌΠ΅Π½

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта, Π½ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ элСмСнты Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ доступа ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ пространству ΠΈΠΌΠ΅Π½ (Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΎ Π½Π΅ объявлСно ΠΊΠ°ΠΊ встроСнноС), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для инкапсуляции Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ интСрфСйса Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½.

ВстроСнныС пространства ΠΈΠΌΠ΅Π½ (C++ 11)

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… пространств ΠΈΠΌΠ΅Π½ Ρ‡Π»Π΅Π½Ρ‹ встроСнного пространства ΠΈΠΌΠ΅Π½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ‡Π»Π΅Π½Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½. Π­Ρ‚Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² срСди Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ встроСнном пространствС ΠΈΠΌΠ΅Π½. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ спСциализации Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½ для шаблонов, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… Π²ΠΎ встроСнном пространствС ΠΈΠΌΠ΅Π½. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ внСшний ΠΊΠΎΠ΄ привязываСтся ΠΊ встроСнному пространству ΠΈΠΌΠ΅Π½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½ шаблона, объявлСнного Π²ΠΎ встроСнном пространствС ΠΈΠΌΠ΅Π½.

ВстроСнныС пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ управлСния вСрсиями для управлСния измСнСниями Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ интСрфСйсС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ ΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ интСрфСйса Π² своСм собствСнном пространствС ΠΈΠΌΠ΅Π½, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит ΡΠ°ΠΌΡƒΡŽ послСднюю ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, квалифицируСтся ΠΊΠ°ΠΊ встроСнноС ΠΈ поэтому прСдставляСтся Ρ‚Π°ΠΊ, Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΎ являСтся нСпосрСдствСнным Ρ‡Π»Π΅Π½ΠΎΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Parent::Class, автоматичСски привязываСтся ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ пространству ΠΈΠΌΠ΅Π½, содСрТащСму Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово inline Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ объявлСнию пространства ΠΈΠΌΠ΅Π½ Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ компиляции.

ΠŸΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ‹ пространств ΠΈΠΌΠ΅Π½

ИмСна пространств ΠΈΠΌΠ΅Π½ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π½Π΅ слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ. Если Π΄Π»ΠΈΠ½Π° ΠΈΠΌΠ΅Π½ΠΈ затрудняСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, Π³Π΄Π΅ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ псСвдоним пространства ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слуТит Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ для фактичСского ΠΈΠΌΠ΅Π½ΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ ΠΈΠ»ΠΈ бСзымянныС пространства ΠΈΠΌΠ΅Π½

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ явноС пространство ΠΈΠΌΠ΅Π½, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΌΡƒ имя.

Π­Ρ‚ΠΎ называСтся бСзымянным ΠΈΠ»ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌ пространством ΠΈΠΌΠ΅Π½, ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ для ΠΊΠΎΠ΄Π° Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… (Ρ‚. Π΅. ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ) Π±Π΅Π· создания ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½. Π’Π΅ΡΡŒ ΠΊΠΎΠ΄, находящийся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² бСзымянном пространствС ΠΈΠΌΠ΅Π½, Π½ΠΎ эти ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ само пространство ΠΈΠΌΠ΅Π½, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ этого Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, Π²Π½Π΅ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *