«Правильный» путь в Magento может быть ближе к этому:
<div id="<?php echo $this->getVar1(); ?>"><?php echo $this->getVar2(); ?></div>
Наличие меньшего количества кода может быть хорошей вещью, но только тогда, когда вы понимаете компромиссы. Ради сохранения двух строк (или без строк, если вы используете вышеописанную технику), вы фактически теряете некоторую гибкость.
Причина, по которой Magento так сильно зависит от магических get*
и set*
методов, заключается в том, что они могут быть переопределены в классе прозрачным способом.
Допустим, ради аргумента, что в будущем кто-то переопределит ваш класс и решит, что var1
следует рассчитывать на лету, а не устанавливать статически (это может случаться не часто, но Вариену нужно было принять это во внимание для основных классов). Если вы устанавливаете переменные вручную и используете их как таковые, это, вероятно, потребует изменения нескольких ссылок в коде. Однако, используя магические get*
методы, вычисления для атрибутов намного проще:
public function getVar1() {
$value = $this->_getData('var1');
// perform calculations here
return $value;
}
Эта формулировка даже не блокирует эквивалент set*
вызова, а также не требует каких-либо обновлений кода, основанного на этом методе. Поэтому, когда можете, используйте магические методы, так как они более идиоматичны для фреймворка и позволят вам и другим максимально гибко работать с вашими дополнениями кода.
Надеюсь, это поможет!
Спасибо,
Джо