Найти Π² Π”Π·Π΅Π½Π΅
ΠšΠΎΠ΄ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

🧩 РСгистрация кастомных классов Π² 1Π‘-Битрикс

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° 1Π‘-Битрикс Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои собствСнныС классы: сСрвисы, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΈ, ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. Π§Ρ‚ΠΎΠ±Ρ‹: Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ классы для Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (autoload). Bitrix ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ классов, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… PSR-4 β€” это стандарт, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ классы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ связаны с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой. НапримСр: Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Ρ‚Π°ΠΊΡƒΡŽ структуру Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ: Π€Π°ΠΉΠ»: /local/php_interface/lib/Services/MyService.php ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π€Π°ΠΉΠ»: /local/php_interface/autoload.php Bitrix автоматичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ /local/php_interface/init.php ΠΏΡ€ΠΈ запускС. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚ΡƒΠ΄Π°: Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс Π² любом мСстС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² шаблонС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ классС: Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, загруТаСтся Π»ΠΈ класс: Если Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Bitrix-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ рСгистрации: Π’ composer.json: ПослС этого: Class not found. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ, namespace ΠΈ имя Ρ„Π°ΠΉΠ»Π°
include(): Failed opening. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ построСн ΠΏΡƒΡ‚ΡŒ Π² autoload.php
Класс нС заг
ОглавлСниС

Π—Π°Ρ‡Π΅ΠΌ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ кастомныС классы?

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° 1Π‘-Битрикс Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои собствСнныС классы: сСрвисы, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΈ, ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. Π§Ρ‚ΠΎΠ±Ρ‹:

  • ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ require_once Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅,
  • Π½Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄,
  • ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ,
  • ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ соврСмСнным стандартам,

Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ классы для Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (autoload).

βœ… Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ PSR-4 ΠΈ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°

Bitrix ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ классов, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… PSR-4 β€” это стандарт, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ классы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ связаны с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой.

НапримСр:

  • Класс Local\Services\MyService
  • Π€Π°ΠΉΠ»: /local/php_interface/lib/Services/MyService.php

πŸ“ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Ρ‚Π°ΠΊΡƒΡŽ структуру Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ:

-2

πŸ“„ Π¨Π°Π³ 1: Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ класс

Π€Π°ΠΉΠ»: /local/php_interface/lib/Services/MyService.php

-3

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:

  • ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½ Local\Services соотвСтствуСт ΠΏΠ°ΠΏΠΊΠ΅ lib/Services
  • Класс ΠΈ имя Ρ„Π°ΠΉΠ»Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚

βš™οΈ Π¨Π°Π³ 2: Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ autoload.php

Π€Π°ΠΉΠ»: /local/php_interface/autoload.php

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ классы ΠΈΠ· пространства Local\, располоТСнныС Π² /local/php_interface/lib.
Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ классы ΠΈΠ· пространства Local\, располоТСнныС Π² /local/php_interface/lib.

πŸ”Œ Π¨Π°Π³ 3: ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ autoload.php Π² init.php

Bitrix автоматичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ /local/php_interface/init.php ΠΏΡ€ΠΈ запускС.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚ΡƒΠ΄Π°:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Bitrix инициализируСтся, наша Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½Π°.
Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Bitrix инициализируСтся, наша Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½Π°.

βœ… Π¨Π°Π³ 4: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ наш класс

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс Π² любом мСстС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² шаблонС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ классС:

-6

πŸ” Π¨Π°Π³ 5: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, загруТаСтся Π»ΠΈ класс:

-7

🧱 ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°: РСгистрация классов Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅

Если Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Bitrix-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ рСгистрации:

МоТно ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ это Π² install/index.php ΠΈΠ»ΠΈ include.php.
МоТно ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ это Π² install/index.php ΠΈΠ»ΠΈ include.php.

πŸ”„ ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Ρ‡Π΅Ρ€Π΅Π· Composer (Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚)

Π’ composer.json:

-9

ПослС этого:

-10

❗ РаспространённыС ошибки

Class not found. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ, namespace ΠΈ имя Ρ„Π°ΠΉΠ»Π°
include(): Failed opening. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ построСн ΠΏΡƒΡ‚ΡŒ Π² autoload.php
Класс Π½Π΅ загруТаСтся автоматичСски. Autoload.php Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π² init.php
Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ классы ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ namespace, ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΠ΅Π½

πŸ“¦ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ событий

Если Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий:

-11

И в init.php:

-12

πŸ’¬ Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

РСгистрация кастомных классов Π² 1Π‘-Битрикс β€” ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ шаг для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ИспользованиС Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ:

  • ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅,
  • ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ,
  • ускоряСт Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ:

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ PSR-4 ΠΈ autoload.php
  • ΠžΡ€Π³Π°Π½ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ Π² пространства ΠΈΠΌΡ‘Π½
  • По возмоТности β€” интСграция Ρ‡Π΅Ρ€Π΅Π· Composer