2012-05-14 1 views
0

Я решил повеселиться и реализовать .NET-свойства в PHP.PHP и реализация .Netish Свойства

Мой текущий дизайн-центры вокруг что-то вроде:

$var; 

method Var($value = null) 
{ 
if($value == null) { 
return $var; 
} 
else { 
$var = $value; 
} 

} 

Очевидно, что это работает в немного проблем, если кто-то пытается установить свойство (и связанного с переменной) в нуль, так что я имею в виду создание класс, который никогда не будет использоваться. Мысли, комментарии?

ответ

2

Не изобретайте велосипед. PHP уже предоставляет магические методы __get и __set, которые могут использоваться для реализации свойств .NET-lookalike; на страницах документации есть примеры. Фреймворки PHP также используют эти крючки для перенаправления выполнения кода на правильные методы getter/setter (которые действительно должны быть разными по той причине, что вы обнаружили себя), чтобы можно было добиться свойств только для чтения; (по общему признанию, сложный) пример - this.

Pro совет: если вы переопределить __get и __set, вам нужно будет переопределить __isset и __unset, чтобы ваш класс может продолжать вести себя интуитивно в присутствии конструкций, таких как empty и unset.

0

Я не понимаю, чего вы пытаетесь достичь здесь. Вы хотите, чтобы геттер?

public function getVar() { 
    return $this->var; 
} 

Вы хотите сеттер?

public function setVar($newVar) { 
    $this->var = $newVar; 
} 

Вы можете даже сделать его открытым и есть кто-то на улице, чтобы установить вар:

public $var; 
... 
$object->var = "New Var"; 
Смежные вопросы