1: | <?php |
2: | |
3: | namespace Teto\Object; |
4: | |
5: | use function property_exists; |
6: | |
7: | /** |
8: | * Private property behaves like read only. |
9: | * |
10: | * NOTICE: You may not be able to imagine the behavior of this trait in the inherited class. |
11: | * |
12: | * @see \Teto\Object\PrivateGetterTest |
13: | * |
14: | * @author USAMI Kenta <tadsan@zonu.me> |
15: | * @copyright 2016 Baguette HQ |
16: | * @license http://www.apache.org/licenses/LICENSE-2.0 |
17: | */ |
18: | trait PrivateStrictGetter |
19: | { |
20: | public function __get($name) |
21: | { |
22: | if (property_exists($this, $name)) { |
23: | return $this->$name; |
24: | } |
25: | |
26: | throw new \OutOfRangeException("Unexpected key:'$name'"); |
27: | } |
28: | |
29: | public function __isset($name) |
30: | { |
31: | return isset($this->$name); |
32: | } |
33: | } |
34: |