Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π² PHP

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² PHP β€” интСрфСйсах. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° абстрактныС классы ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слабосвязанныС прилоТСния.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ интСрфСйс?

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ абстрактныС классы Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² классах, наслСдуСмых ΠΎΡ‚ интСрфСйса.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ классы ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Когда ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько классов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ интСрфСйс, это называСтся ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ цСлСсообразно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ общая Π·Π°Π΄Π°Ρ‡Π° ΠΈ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, примСняСмых Π² зависимости ΠΎΡ‚ ситуации.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ВсС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² интСрфСйсС ΡΠ²Π»ΡΡŽΡ‚ΡΡ абстрактными, поэтому ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΊΠΎΠ΄Π΅, ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово abstract Π½Π΅ трСбуСтся.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² абстрактного класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ, всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ конструкторы ΠΈΠ»ΠΈ дСструкторы, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ класса.

Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс?

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создадим интСрфСйс для классов, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… автомобилями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ всС свои ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ setModel() ΠΈ getModel() классам, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΌ интСрфСйс:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹, ΠΊΠ°ΠΊ ΠΈ абстрактныС классы, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ константы. Однако, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ абстрактных классов, интСрфСйсы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ΠšΠ»Π°ΡΡΡ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ интСрфСйсы, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΡ‚ интСрфСйсов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ классС с ΠΈΠΌΠ΅Π½Π΅ΠΌ miniCar Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ΄ ΠΊΠΎ всСм абстрактным ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:

РСализация Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… интСрфСйсов

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько интСрфСйсов Π² ΠΎΠ΄Π½ΠΎΠΌ классС ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°ΠΊΠΎΠ½, Π·Π°ΠΏΡ€Π΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉ наслСдованиС ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ класс MyClass Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²Π° интСрфСйса, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми Π² объявлСнии. ΠŸΡ€ΠΈ этом ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ всС абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ созданного класса:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:

Как Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ класс ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс?

Класс ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ класс, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько интСрфСйсов:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ класс, Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько интСрфСйсов.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ интСрфСйсов

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ интСрфСйсы:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом:

интСрфСйсабстрактный класс
ΠΊΠΎΠ΄— абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
— константы
— абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
— константы
— ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
— ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа— ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅— ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅
— Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅
количСство Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉΠžΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ класс ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 1 интСрфСйсаДочСрний класс ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ 1 абстрактного класса

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ интСрфСйсы, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ различиях ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактными классами ΠΈ интСрфСйсами. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ здСсь, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ знания Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

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

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π² PHP

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² PHP β€” интСрфСйсах. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° абстрактныС классы ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слабосвязанныС прилоТСния.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ интСрфСйс?

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ абстрактныС классы Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² классах, наслСдуСмых ΠΎΡ‚ интСрфСйса.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ классы ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Когда ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько классов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ интСрфСйс, это называСтся ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ цСлСсообразно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ общая Π·Π°Π΄Π°Ρ‡Π° ΠΈ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, примСняСмых Π² зависимости ΠΎΡ‚ ситуации.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ВсС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² интСрфСйсС ΡΠ²Π»ΡΡŽΡ‚ΡΡ абстрактными, поэтому ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΊΠΎΠ΄Π΅, ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово abstract Π½Π΅ трСбуСтся.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² абстрактного класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ, всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ конструкторы ΠΈΠ»ΠΈ дСструкторы, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ класса.

Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс?

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создадим интСрфСйс для классов, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… автомобилями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ всС свои ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ setModel() ΠΈ getModel() классам, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΌ интСрфСйс:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹, ΠΊΠ°ΠΊ ΠΈ абстрактныС классы, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ константы. Однако, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ абстрактных классов, интСрфСйсы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ΠšΠ»Π°ΡΡΡ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ интСрфСйсы, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΡ‚ интСрфСйсов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ классС с ΠΈΠΌΠ΅Π½Π΅ΠΌ miniCar Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ΄ ΠΊΠΎ всСм абстрактным ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:

РСализация Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… интСрфСйсов

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько интСрфСйсов Π² ΠΎΠ΄Π½ΠΎΠΌ классС ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°ΠΊΠΎΠ½, Π·Π°ΠΏΡ€Π΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉ наслСдованиС ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ класс MyClass Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²Π° интСрфСйса, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми Π² объявлСнии. ΠŸΡ€ΠΈ этом ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ всС абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ созданного класса:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:

Как Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ класс ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс?

Класс ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ класс, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько интСрфСйсов:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ класс, Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько интСрфСйсов.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ интСрфСйсов

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ интСрфСйсы:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом:

интСрфСйсабстрактный класс
ΠΊΠΎΠ΄— абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
— константы
— абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
— константы
— ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
— ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа— ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅— ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅
— Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅
количСство Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉΠžΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ класс ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 1 интСрфСйсаДочСрний класс ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ 1 абстрактного класса

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ интСрфСйсы, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ различиях ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактными классами ΠΈ интСрфСйсами. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ здСсь, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ знания Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

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

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π² PHP

β€” это список ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ интСрфСйс классС. ΠžΠ±Ρ€Π°Ρ‰Π°ΡŽ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, интСрфСйс β€” это лишь список ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² классС, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ это слово β€” «Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½», Π° Π½Π΅ слово «ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½».

Π”Π°Π²Π°ΠΉΡ‚Π΅ расмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ объявлСния интСрфСйса с ΠΈΠΌΠ΅Π½Π΅ΠΌ Planes (самолёты) ΠΈ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² классС Boing.

Класс Boing ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½ΠΎ ΠΎΠ½ обязан Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, прописанныС Π² интСрфСйсС.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° абстрактныС классы Π² PHP, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ Π½ΠΈΡ… интСрфСйсы Π½Π΅ содСрТат ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с Ρ‚Π΅Π»Π°ΠΌΠΈ, Π° ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ‚ΠΎΠ»ΡŒΠΊΠΎ список ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ·ΠΎΠ²Π°Π½ Π² классС, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΌ этот интСрфСйс.

Π’ интСрфСйсах всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ фактичСски ΡΠ²Π»ΡΡŽΡ‚ΡΡ абстрактными, ΠΏΡ€ΠΈ этом ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово abstract ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² интСрфСйсС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π² PHP ΠΊΡ€ΠΎΠΌΠ΅ списка ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ константы.

Π’Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ извСстно, Ρ‡Ρ‚ΠΎ Π² PHP мноТСствСнного наслСдования Π½Π΅Ρ‚, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ класс ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ класс. Но интСрфСйсы Π² PHP ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ класс ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ нСсколько интСрфСйсов.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² классС Boing Π΄Π²ΡƒΡ… интСрфСйсов:

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Π΅ интСрфСйсы просто ΠΏΠ΅Ρ€Π΅Ρ‡Π΅ΡΠ»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ:

Но польза ΠΎΡ‚ интСрфСйсов Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π½Π°Π±ΠΎΡ€ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π² Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… классах. Π­Ρ‚ΠΎ бСзусловно ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ программистов Π½Π°Π΄ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ.

Π£ интСрфСйсов Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ свойство, ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

Ѐилософия интСрфСйсов ΠΈ абстрактных классов

Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π² PHP Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° сущностСй: интСрфСйсы ΠΈ абстрактныС классы. Они ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ, Π½ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ тСхничСских Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈΡ… использования.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для описания дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Абстрактный класс описываСт класс сущностСй Π² Ρ†Π΅Π»ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ абстрактного класса ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ†Π²Π΅Ρ‚, производитСля, ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠ³ΡƒΡ‚ Π΅Π·Π΄ΠΈΡ‚ΡŒ, ΡΠΈΠ³Π½Π°Π»ΠΈΡ‚ΡŒ ΠΈ Ρ‚.Π΄. А интСрфСйс ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для описаниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² случаС автомобиля это: Π³Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ, ΡΠΈΠ³Π½Π°Π»ΠΈΡ‚ΡŒ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°Ρ€Ρ‹ ΠΈ Ρ‚.Π΄.

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

Готовимся ΠΊ собСсСдованию ΠΏΠΎ PHP: Всё, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎΠ± интСрфСйсах, совмСстимости сигнатур ΠΈ Π½Π΅ побоялись ΡƒΠ·Π½Π°Ρ‚ΡŒ

Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π€ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом phpΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹, Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ появившись Π² PHP 5, Π΄Π°Π²Π½ΠΎ ΡƒΠΆΠ΅ заняли ΠΏΡ€ΠΎΡ‡Π½ΠΎΠ΅ мСсто Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ (ΠΈΠ»ΠΈ всё-Ρ‚Π°ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ «класс-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉΒ»?) части языка.

Казалось Π±Ρ‹ β€” Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅ интСрфСйса? «ΠšΠ°ΠΊ Π±Ρ‹ класс, Π½ΠΎ ΠΈ Π½Π΅ класс, нСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр, скорСС ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… классов, содСрТит Π² сСбС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²» β€” Π½Π΅ ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ, ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌΠΈ словами Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ всСго ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚Π΅ Π½Π° собСсСдовании Π½Π° Π΄Π΅ΠΆΡƒΡ€Π½Ρ‹ΠΉ вопрос ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ интСрфСйс?

Однако Π½Π΅ всё Ρ‚Π°ΠΊ просто, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅ΠΌΡƒ программисту Π½Π° PHP. ΠŸΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, руководство ΠΏΠΎ языку Π²Π²ΠΎΠ΄ΠΈΡ‚ вас Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΠ΄Π΅ таятся Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ Β«ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ камни»…

Π’Ρ€ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ части:

Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ интСрфСйс?

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π±Π΅Π· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: сразу послС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° (сигнатуры) ΠΌΠ΅Ρ‚ΠΎΠ΄Π° слСдуСт Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой:

Π§ΡƒΡ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ (хотя ΠΈ описан Π² ΠΌΠ°Π½ΡƒΠ°Π»Π΅) Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ интСрфСйс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ константы (разумССтся, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅!):

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ константы Π² интСрфСйсах Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ распространСния Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, хотя ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈΠ½ΠΎΠ³Π΄Π°? ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ… Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² интСрфСйсС-наслСдникС ΠΈΠ»ΠΈ Π² классС, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΌ Π΄Π°Π½Π½Ρ‹ΠΉ интСрфСйс. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ интСрфСйсов β€” самыС константныС константы Π² ΠΌΠΈΡ€Π΅ πŸ™‚

Π§Π΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ интСрфСйс?

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚. ΠšΡ€ΠΎΠΌΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… констант.

НСльзя Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² интСрфСйс:

Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ сигнатур ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Для дальнСйшСго изучСния интСрфСйсов Π½Π°ΠΌ с Π²Π°ΠΌΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ ваТнСйшСм понятии, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ нСзаслуТСнно ΠΎΠ±ΠΎΠΉΠ΄Π΅Π½ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ Π² ΠΌΠ°Π½ΡƒΠ°Π»Π΅ ΠΏΠΎ PHP: ΠΎ понятии «совмСстимости сигнатур».

Π‘ΠΈΠ³Π½Π°Ρ‚ΡƒΡ€Π° β€” это описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΌΠ΅Ρ‚ΠΎΠ΄Π°), Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π² сСбя:

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, A ΠΈ B.
Π‘ΠΈΠ³Π½Π°Ρ‚ΡƒΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ B считаСтся совмСстимой с A (порядок Π²Π°ΠΆΠ΅Π½, ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ нСсиммСтрично!) Π² строгом смыслС, Ссли:

Они ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚

Π’Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ случай, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚ Π½Π΅Ρ‡Π΅Π³ΠΎ.

B добавляСт ΠΊ A Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

B суТаСт ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ A

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²Π²Π΅Π»ΠΈ эти Ρ‚Ρ€ΠΈ простых ΠΏΡ€Π°Π²ΠΈΠ»Π° совмСстимости ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ, станСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ дальнСйшиС тонкости, связанныС с интСрфСйсами.

НаслСдованиС интСрфСйсов

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°:

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ-наслСдник ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡ‚ интСрфСйса-ΠΏΡ€Π΅Π΄ΠΊΠ° Π² наслСдство всС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² ΠΏΡ€Π΅Π΄ΠΊΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ константы.

Π’ интСрфСйсС-наслСдникС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Но Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π»ΠΈΠ±ΠΎ Π΅Π³ΠΎ сигнатура Π±ΡƒΠ΄Π΅Ρ‚ Π² точности ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с сигнатурой Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ, Π»ΠΈΠ±ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ совмСстима (см. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π»):

Если Π»ΠΈ Π² PHP мноТСствСнноС наслСдованиС?

Если Π²Π°ΠΌ Π·Π°Π΄Π°Π΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΎΠΉ вопрос, смСло ΠΎΡ‚Π²Π΅Ρ‡Π°ΠΉΡ‚Π΅: Β«Π΄Π°Β». Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… интСрфСйсов.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ всё:

ΠŸΡ€Π°Π²ΠΈΠ»Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² сигнатур ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΈ мноТСствСнном наслСдовании Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²Ρ‹ΡˆΠ΅:

β€” Π»ΠΈΠ±ΠΎ сигнатуры ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ
β€” Π»ΠΈΠ±ΠΎ сигнатура ΠΌΠ΅Ρ‚ΠΎΠ΄Π° интСрфСйса, упомянутого Π² спискС ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ совмСстима с сигнатурой ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ° (Π΄Π°, порядок упоминания ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΈΠΉ кСйс, просто Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΠΉΡ‚Π΅ Π΅Π³ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅)

Вонкости Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйсов

БобствСнно, послС всСго, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, это ΡƒΠΆΠ΅ ΠΈ Π½Π΅ тонкости, Π° Ρ‚Π°ΠΊ, ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π½ΡŽΠ°Π½ΡΡ‹.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, наслСдованиС класса ΠΎΡ‚ интСрфСйса называСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Бмысл Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ просто ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π² наслСдство ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ константы, Π½ΠΎ обязаны Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°Π½Ρ‹ сигнатурами, Π½Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΊΠΎΠ΄ΠΎΠΌ:

Π’Π°ΠΆΠ½Ρ‹ΠΉ аспСкт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ интСрфСйса ΠΎΡ‚ наслСдования ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса β€” это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ классС нСсколько интСрфСйсов сразу.

Как Π±Ρ‹Ρ‚ΡŒ, Ссли Π² Ρ€Π°Π·Π½Ρ‹Ρ… интСрфСйсах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ класс, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ (с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ)? Π‘ΠΌΠΎΡ‚Ρ€ΠΈ Π²Ρ‹ΡˆΠ΅ β€” Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ наслСдовании интСрфСйсов Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ совмСстимости сигнатур.

И Π΄Π°. НС Π²Π΅Ρ€ΡŒΡ‚Π΅ ΠΌΠ°Π½ΡƒΠ°Π»Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠ²ΠΎΠ·Π³Π»Π°ΡˆΠ°Π΅Ρ‚:

Π‘ΠΈΠ³Π½Π°Ρ‚ΡƒΡ€Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² классС, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΌ интСрфСйс, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с сигнатурами, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Π² интСрфСйсС, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° Ρ„Π°Ρ‚Π°Π»ΡŒΠ½Π°Ρ ошибка.

The class implementing the interface must use the exact same method signatures as are defined in the interface. Not doing so will result in a fatal error.

Всё Π½Π΅ Ρ‚Π°ΠΊ, дСйствуСт Ρ‚ΠΎΠΆΠ΅ самоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ совмСстимости:

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ β€” это класс? Pro et Contra

Π’ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ Π½Π΅Ρ‚. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ β€” это интСрфСйс, ΠΎΠ½ отличаСтся ΠΎΡ‚ класса хотя Π±Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ нСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ «экзСмпляр интСрфСйса».

И Π²ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ Π΄Π°, Ρƒ Π½ΠΈΡ… Π² PHP ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ:

Π§Ρ‚ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Π½ΠΎΡ‡ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ отвСтствСнным собСсСдованиСм?

РазумССтся, ΠΌΠ°Π½ΡƒΠ°Π» ΠΏΠΎ языку:

БистСмный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΡΠ°ΠΌΠΎΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ΅Π½. И, ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡƒ мнСнию, Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡƒΡ‚ΠΈ Π² IT ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ самообучСниС Π²Π΅Π±ΠΈΠ½Π°Ρ€Ρ‹ ΠΈ краткосрочныС курсы. ИмСнно поэтому я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ (ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ скромно Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€ΡƒΡŽ) Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΠΎΡΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΎΠ²Ρ‹Π΅ Π²Π΅Π±ΠΈΠ½Π°Ρ€Ρ‹ ΠΈ курсы ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠΌ сочСтании курсов ΠΈ самоподготовки всСгда Π½Π°Π»ΠΈΡ†ΠΎ!

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

ВсС ΠΎ WEB ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

WEB ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚ А Π΄ΠΎ Π―

Π—Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ сайт:

Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ сСти:

Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π€ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π€ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π€ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π€ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π€ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php

ΠŸΠ°Ρ€Ρ‚Π½Π΅Ρ€Ρ‹:

ПониманиС использования интСрфСйса ΠΈ абстрактного класса Π² PHP

Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php. Π€ΠΎΡ‚ΠΎ Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ интСрфСйс Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрфСйсом php

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток. Π’ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ нашСл ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ использования интСрфСйсов ΠΈ абстрактных классов Π² PHP. Π Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. И Ρ€Π΅ΡˆΠΈΠ» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ (Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ), Ρ‚.ΠΊ. ΡΡ‚Π°Ρ‚ΡŒΡ наглядно ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйсы ΠΈ абстрактныС классы. И Ρ‚Π°ΠΊ, поСхали…

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ

Π”Π°Π²Π°ΠΉΡ‚Π΅ обратимся ΠΊ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ PHP ΠΈ посмотрим ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ интСрфСйса:

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс, Π±Π΅Π· нСобходимости ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π² PHP опрСдСляСтся, ΠΊΠ°ΠΊ ΠΈ класс Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ вмСсто ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова class ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ interface.

ВсС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса ΡΠ²Π»ΡΡŽΡ‚ΡΡ абстрактными ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ – это ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° интСрфСйса. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ объявлСния интСрфСйса:

Π’ интСрфСйсС Ρ‚Π΅Π»ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, ΠΌΡ‹ опрСдСляСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс. НапримСр, Ρƒ нас Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π°Π²Ρ‚ΠΎΡ€ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ интСрфСйс. Автор ΠΏΠΈΡˆΠ΅Ρ‚ Π² ΠΆΡƒΡ€Π½Π°Π», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ класс LogToFile. Но Ссли ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΆΡƒΡ€Π½Π°Π» с использованиСм класса LogToDatabase. НСобходимо ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ТСстко Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ссылку Π½Π° класс:

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΠΌΡ‹ записываСм Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ LogToDatabase, Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ LogToFile Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ конструктора Π² Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ конструктора ΠΌΡ‹ Π²Π²ΠΎΠ΄ΠΈΠΌ интСрфСйс. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько классов ΠΈ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ΡΡŒ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Π΅Π· измСнСния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ссылок Π½Π° классы.
Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π°Π²Ρ‚ΠΎΡ€ ΠΏΠΈΡˆΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΆΡƒΡ€Π½Π°Π», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ LogToDatabase, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΆΡƒΡ€Π½Π°Π», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ LogToFile, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ просто Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Π΅Π· измСнСния Π΄Ρ€ΡƒΠ³ΠΈΡ… классов.

Абстрактный класс

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ PHP для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстрактный класс.

PHP 5 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ абстрактных классов ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ классов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ абстрактныС, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы, ΠΈ любой класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ абстрактный. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ абстрактными, нСсут, ΠΏΠΎ сущСству, лишь ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ смысл ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ абстрактный класс?

НапримСр, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим класс Tea

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим класс Coffee:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ классах Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° addHotWater(), addSugar(), addMilk() ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄:

Автор создаСт абстрактный класс ΠΈ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ Template. Π’ этом классС опрСдСляСт Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° addHotWater (), addSugar () ΠΈ addMilk () ΠΈ создаСт абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΠΈΠΌΠ΅Π½Π΅ΠΌ addPrimaryToppings.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ класс Tea Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌ для класса Template, Ρ‚ΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‚Ρ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ addPrimaryToppings ().

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

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

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