Черти в PHP, използват примери
Черти се използват, когато е необходимо да се приложат редица общи методи за няколко класа, а не случаи на присвояване на нов тип клас, както с помощта на абстрактни класове или интерфейси.
Черти реши проблема с код дублиране.
Нека разгледаме един пример, използвайки черта.
В този пример, ние създадохме черта someTrait използване черта на ключовите думи. Тази черта има само един метод doStuff. След това, когато се създаде клас someClass ние използвахме използването ключова дума за да се свържете ни черта. На следващо място, отнасящи се пряко до метода на класа, който се инициализира в черта, someClass :: doStuff ();. видяхме как работи.
Важно е да се разбере какво черти не са възложени на проявления на категория (обект) на нов тип.
В резултат на пример показва, че този клас не съответства на обект тип someClass someTrait. Въпреки, че този клас използва посочения черта.
Не може да се създаде отделен случай на признака.
Използване на няколко черти
Ако е необходимо, можете да използвате няколко черти в създаването на един клас. За тази цел черти имена да бъдат описани чрез запетая след употребата на думата.
От този момент, всичко е просто.
Споделянето черти, както и интерфейси
Така че, ние вече знаем, че чертите не назначението на нов тип данни. Но може да се наложи този общ вид данни. Този проблем е решен чрез споделяне черти, както и интерфейси. Най-напред се определи метод интерфейс подпис someMethod на. и след това черти описват този метод. Когато създадете клас, ние прилагаме интерфейса, просто като го свържете със черта, в която се описва желания метод.
Внос от подхода черта отговаря на изискванията на интерфейса, така че сега можем да проверим клас обекти с помощта instanceof оператор.
назоват конфликти в черта, insteadof.
Може би тази ситуация: две черти, които ние се свързват с един и същи клас съдържа методи с едно и също име. По този начин ние имаме конфликт име. Това решават конфликтите по ключова дума insteadof.
Нека разгледаме примера на това как работи:
Чрез използването на ключова дума, ние добавихме тялото, която е оградена със скоби. В рамките на този орган, сме използвали ключова дума insteadof. отляво на който съдържа пълния дефиницията на метода, който се състои от името на черта и метод име, които са разделени чрез двойна дебелото черво. От дясната страна показва името на признака, методът, който трябва да бъде заменен.
Псевдоними да бъдат заменени от метод
По този начин, в последния ни например, един метод, които използваме, но как ще предостави втория метод, който е регистриран в характерната черта otherTrait. Този метод вече е ново определение и се отнасят към него по име е невъзможно. Следователно, за да получите достъп до него с помощта на ключовата дума, тъй като. което създава псевдоним.
Ето как става това:
Ако само възлага псевдоними достатъчно конфликти имена на методи с помощта на ключовата дума като. На първо място, не забравяйте да смените начина на използването на думата insteadof. Едва тогава се използва като. тъй като тази конструкция определя псевдоним на заместен само методи.
Статични методи черти
Нищо не ни пречи да декларират методи в статично черта. Нека разгледаме един пример за черта със статични методи.
Аз съм в предишния пример адресирано метод черта директно, без създаване на обект. В този пример аз само метод обявен като статично черта.
Достъп до свойства на базовия клас
Отличителният белег за достъп до свойствата на базовия клас, можете да използвате псевдо- $ това. Нека разгледаме един пример за използването му.
В този код, има една, но сериозен недостатък. Фактът, че няма гаранция, че в базовия клас ще се изисква имот $ TaxRate. Гарантира наличието на такива имоти могат да бъдат използване абстрактни методи, черти на доходи ги подкрепят.
Абстрактни методи в класа
Ако черта е обявен абстрактен метод, този метод трябва да се прилагат в базовия клас.
В следващия пример, ние се гарантира наличието на свойствата на базовия клас, като обяви, абстрактен метод в черта.
В този пример, ние създадохме един клас кариерист getTaxRate (). който съдържа и връща данъчна ставка. Отличителният белег обявихме абстрактно кариерист, така че не се изисква базовия клас да го съдържа.
Промяна на права за достъп до методите на черта
Очевидно е, че в рамките на черта можем да използваме всеки всеки модификатор за достъп (държавни, частни, защитени) на метода. Но освен това, ние сме в състояние да промени класа на този модификатор към другия. За да направите това, използвайте оператора след думите като можете да зададете нов модификатор.
Тук, в класната стая, ние сме се променили модификатора за достъп до частния и сега е невъзможно да се приложи този метод someClass :: someMethod (). но можете директно да се прилага за този метод в характерната черта someClass :: someMethod ().
Накратко за това, което сме научили.
- Черти се използват, когато трябва да поставите набор от методи в различни класове, те са малко по-подобни на командата включва.
- Черти не са им възложени с помощта на нов тип клас.
- Черти са декларирани с помощта на черта ключова дума. класна стая употреба черта предписано ключова дума употреба.
- В един клас, можете да използвате няколко черти.
- Не може да се създаде отделен случай на признака.
- Черти могат да бъдат използвани заедно с връзките.
- име противоречи черти елиминират чрез ключовата дума insteadof. който заменя метод.
- Заместени с метода може да се даде псевдоним помощта на ключовата дума, както е.
- Чрез използването като ключова дума, можете също да промените обхвата на метода в черта на класа.
- Отличителният белег може да използва псевдо $ това, за да получите достъп до свойства на базовия клас.
- Отличителният белег може да се определи абстрактни класове, които трябва да бъдат приложени в класове, които използват тези черти.
- Методи черта може да бъде достъпен директно с помощта на оператора двойно дебелото черво.