galancev / segmentator
Segmentator component
v2.2
2021-05-19 14:47 UTC
Requires
- php: >=5.6.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Для лёгкого создания сегментаторов
Для создания нового сегментатора нужно отнаследовать класс нового сегментатора от класса Segmentator, опционально поправить название куки, время её жизни и домен, на котором она должна работать. А так же обязательно определить методы getNewSegment и isCorrectSegment.
Пример:
<?php use Galantcev\Components\Segmentator; /** * Новый яростный сегментатор */ class NewPerfectSegmentator extends Segmentator { /** * Имя куки * @var string */ protected $cookieName = 'PerfectSegment'; /** * Домен куки * @var string */ protected $cookieDomain = '.google.com'; const SEGMENT_SHOW_BLOCK = 1; const SEGMENT_HIDE_BLOCK = 2; /** * Генерирует новый сегмент * @return int */ protected function getNewSegment() { $rand = mt_rand(0, 100); if ($rand <= 66) { $segment = self::SEGMENT_SHOW_BLOCK; } else { $segment = self::SEGMENT_HIDE_BLOCK; } return $segment; } /** * Проверяет сегмент на корректность * @param int $segment * @return bool */ protected function isCorrectSegment($segment) { return in_array($segment, [ self::SEGMENT_SHOW_BLOCK, self::SEGMENT_HIDE_BLOCK, ]); } /** * Если сегмент с отображением блока * @return bool */ public function isSegmentShowBlock() { return $this->isSegment(self::SEGMENT_SHOW_BLOCK); } /** * Если сегмент со скрытием блока * @return bool */ public function isSegmentHideBlock() { return $this->isSegment(self::SEGMENT_HIDE_BLOCK); } }