note 111213 added to language.oop5.traits
| From: | Serafim | 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