(no subject)
Tuesday, January 26th, 2010 02:26Чёртов Propel генерирует тонны кода, в котором довольно большую часть занимают getter'ы и setter'ы. Для сущности со свойствами foo и bar генерируется класс BaseSomething с предопределёнными методами getFoo, setFoo, getBar и setBar, которые можно (по мере необходимости) переопределять в «нормальном» классе Something. Это очень дубово, ни разу не по-PHPшному.
Я рисую (JFF) для себя небольшой ORM, и для getter'ов/setter'ов применяю простой хак:
Дальше всё очевидно. В модели пишу только те getter'ы и setter'ы, которые действительно нужны (вроде проверки корректности данных). Остальные свойства объявляю public'ом и не парюсь.
Я рисую (JFF) для себя небольшой ORM, и для getter'ов/setter'ов применяю простой хак:
abstract class container
{
public function __get($name) {
$method = 'get_'.$name;
if( method_exists($this, $method) ) {
return $this->$method();
}
throw new Exception('Cannot get '.get_class($this).'::'.$name);
}
public function __set($name, $value) {
$method = 'set_'.$name;
if( method_exists($this, $method) ) {
$this->$method($value);
return;
}
throw new Exception('Cannot set '.get_class($this).'::'.$name);
}
}Дальше всё очевидно. В модели пишу только те getter'ы и setter'ы, которые действительно нужны (вроде проверки корректности данных). Остальные свойства объявляю public'ом и не парюсь.
class something extends container
{
public $foo;
protected $bar; // read-only
function __construct($foo, $bar) {
$this->foo = $foo;
$this->bar = $bar;
}
function get_bar() {
return $this->bar;
}
}
$test = new something('a', 'b');
echo $test->foo; // 'a'
echo $test->bar; // 'b'
$test->bar = 'c'; // exception
no subject
Date: Tuesday, January 26th, 2010 10:07 pm (UTC)А еще, говорят, Doctrine нынче рулит.
no subject
Date: Wednesday, January 27th, 2010 01:21 pm (UTC)no subject
Date: Wednesday, January 27th, 2010 07:06 pm (UTC)Во-вторых, Егоров писал про Zend Framework. А что «ёк» под фрёй — так это Zend Optimizer.
Это очень разные вещи.
Zend Framework — куча кода на PHP, и этот код работает где угодно, где работает сам PHP.
Zend Optimizer — некий закрытый продукт, позволяющий выполнять PHPшные скрипты быстрее «обычного» PHP, и он распространяется в бинарниках для разных платформ.
Чувак, будь внимательнее.
no subject
Date: Wednesday, January 27th, 2010 09:09 pm (UTC)