note 111213 added to language.oop5.traits

From: Date: Sat, 26 Jan 2013 20:38:29 +0000
Subject: note 111213 added to language.oop5.traits
Groups: php.notes 
Request: Send a blank email to php-notes+get-193400@lists.php.net to get a copy of this message
Another useful property of traits: <?php namespace Traits; trait Properties{ public function __get($var){ $var = '_' . $var; $getter = '_get' . $var; if(method_exists($this, $getter)){ try{ $val = $this->$getter(); }catch(\Exception $e){ throw new \Exception($e); } return $val; } throw new \Exception('Can not get property: ' . $var . ', method ' . $getter . ' not exists'); } public function __set($var, $val){ $var = '_' . $var; $setter = '_set' . $var; if(method_exists($this->$setter) && isset($this->$var)){ try{ $setval = $this->$setter($val); }catch(\Exception $e){ throw new \Exception($e); } $this->$var = ($setval === NULL) ? $this->$var : $setval; }else{ throw new \Exception('Can not set property: ' . $var . ', method ' . $setter . ' not exists'); } } } class Some{ use \Chidori\Traits\Properties; // Magic begin protected $_var = 42; protected function _get_var(){ return $this->_var; } protected function _set_var($val){ return NULL; } } $s = new Some(); $s->var = 23; \\ set value echo $s->var; \\ return 42? where is my 23? =) ?> ---- Server IP: 69.147.83.199 Probable Submitter: 178.177.140.230 ---- Manual Page -- http://php.net/manual/en/language.oop5.traits.php Edit -- https://master.php.net/note/edit/111213 Del: integrated -- https://master.php.net/note/delete/111213/integrated Del: useless -- https://master.php.net/note/delete/111213/useless Del: bad code -- https://master.php.net/note/delete/111213/bad+code Del: spam -- https://master.php.net/note/delete/111213/spam Del: non-english -- https://master.php.net/note/delete/111213/non-english Del: in docs -- https://master.php.net/note/delete/111213/in+docs Del: other reasons-- https://master.php.net/note/delete/111213 Reject -- https://master.php.net/note/reject/111213 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#193400) next »