Erebot  latest
A modular IRC bot for PHP 7.0+
Type.php
1 <?php
2 /*
3  This file is part of Erebot, a modular IRC bot written in PHP.
4 
5  Copyright © 2010 François Poirotte
6 
7  Erebot is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  Erebot is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with Erebot. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
21 namespace Erebot\Event\Match;
22 
27 class Type implements \Erebot\Interfaces\Event\Match
28 {
30  protected $type;
31 
38  public function __construct($type)
39  {
40  $this->setType($type);
41  }
42 
49  public function getType()
50  {
51  return $this->type;
52  }
53 
68  public function setType($types)
69  {
70  if (!is_array($types)) {
71  $types = array($types);
72  }
73 
74  $finalTypes = array();
75  foreach ($types as $type) {
76  if (is_object($type)) {
77  $type = get_class($type);
78  }
79 
80  if (!is_string($type)) {
81  throw new \Erebot\InvalidValueException('Not a valid type');
82  }
83 
84  $finalTypes[] = $type;
85  }
86  $this->type = $finalTypes;
87  }
88 
89  public function match(\Erebot\Interfaces\Event\Base\Generic $event)
90  {
91  foreach ($this->type as $type) {
92  if ($event instanceof $type) {
93  return true;
94  }
95  }
96  return false;
97  }
98 }
$type
Type to use in comparisons, as a string.
Definition: Type.php:30
A filter that matches based on the type of event provided.
Definition: Type.php:27