Как да използваме интерфейса за преброяване в PHP
Здравейте всички! В тази статия ще разгледамекак да използвате интерфейса за отчитане в PHP.
Интерфейсът за броене прави вашите класове много гъвкави, когато става въпрос за съхранение на елементи. Например, това ще ви позволи да използвате функциятаcount()вPHPвърху обект, за да върнете някакво преброено число. Изобщо няма значение какъв вид обект е, основното е, че може да се изчисли.
Да разгледаме един пример:
class Collection protected $items = [];
публична функция __construct(масив $items) $this->items = $items; >
публична функция count() return count($this->items); > >
$колекция = нова колекция(['едно', 'две', 'три']); echo $collection->count();
Идеята е следната: имате определен брой елементи, съхранени в колекция, можете да ги предадете на конструктора, когато създавате обекта, можете да имате други методи, които ще добавят елементи, но в нашия пример ще се ограничим до конструктора. След това създаваме нова колекция, в която предаваме три елемента (в нашия случай това са низове). Сега използваме методаcount(), който написахме, в който поставяме масива във функциятаcount()и връщаме резултата.
Ако стартираме примера, виждаме 3, както се очаква. Използването на този интерфейс обаче ни казва, че няма да напишем нещо подобно:
Можем да подобрим това, като напишем така:
Това ще работи, но няма да получим очаквания резултат, тъй като функцията с аргумент под формата на обект ще ни върне булевата стойност1.
За да накараме всичко да работи както искаме, просто трябва да добавим наследяване от интерфейса. Като този:
класКолекцията изпълнява Countable // код >
Сега, когато функциятаcount()се извика с аргумент обект, методътcount(), който написахме, ще бъде извикан автоматично и всичко ще работи правилно.
Countableе много прост, но полезен интерфейс, който прави броенето лесно и ясно. Повече информация можете да намерите на официалния уебсайт наPHP.
И така, това е всичко за днес. Благодаря за вниманието!
Добавете ме като приятелVKontakte: http://vk.com/myrusakov. Ако искате да оцените мен и работата ми, напишете го в моята група: http://vk.com/rusakovmy.
Препоръчайте тази статия на вашите приятели:
Ако харесвате сайта, поставете връзка към него (на вашия сайт, във форума, в контакт):
Тя изглежда така: