Я никогда раньше не работал с полиморфизмом. Я только слышал об этом, когда возник этот вопрос.
У меня есть небольшой бэкэнд с 2 разрешениями. Администратор / Обычный пользователь. В зависимости от разрешения я хочу отображать различные формы навигации, меньше или больше параметров в формах и т. Д. Но я не хочу создавать форму для каждого разрешения, а отключаю элементы, которые мне не нужны и т. Д.
Как бы я поступил с этим?
На данный момент я использую что-то вроде этого: (что на самом деле не полиморфизм)
<?php
class My_Resources_ResourceLoader extends Zend_Application_Resource_ResourceAbstract {
public $templateForm = null;
public $customerForm = null;
function init() {
$permission = 'admind';
if($permission == 'admin') {
$this->templateForm = new Application_Form_newTemplate;
} else {
$form = new Application_Form_newTemplate;
$form->removeElement('newTemplate_customer');
$this->templateForm = $form;
}
return $this;
}
}
И в моем контроллере, например,
<?php
$bootstrap = $this->getInvokeArg('bootstrap');
$xx = $bootstrap->getResource('ResourceLoader');
$this->view->test = $xx->templateForm;
Роли никогда не изменятся. Это, вероятно, будет хорошо, но не самое лучшее решение. Каков будет лучший подход к этому?