2012-04-02 4 views
0

Я новичок в платформе Zend, поэтому, пожалуйста, несите меня.Zend Simple View-Controller-Model Guidelines

У меня есть контроллер, взаимодействующий с моделью, а затем отправьте эту информацию в представление. В настоящее время мой код выглядит примерно так:

//Controller 
$mapper = new Application_Model_Mapper(); 
$mapper->getUserById($userID);  
$this->view->assign('user_name', $mapper->user_name); 
$this->view->assign('about', $mapper->about; 
$this->view->assign('location', $mapper->location); 

//Model 
class Application_Model_Mapper 
{ 
    private $database; 
    public $user_name; 
    public $about; 
    public $location; 

public function __construct() 
{ 
    $db = new Application_Model_Dbinit; 
     $this->database = $db->connect; 
} 

public function getUserById($id) 
{ 
    $row = $this->database->fetchRow('SELECT * FROM my_table WHERE user_id = '. $id .''); 
    $this->user_name = $row['user_name']; 
    $this->about = $row['about']; 
    $this->location = $row['location']; 
} 

} 

//View 
<td><?php echo $this->escape($this->user_name); ?> </td> 
<td><?php echo $this->escape($this->about); ?></td> 
<td><?php echo $this->escape($this->location); ?></td> 

Этот код, очевидно, не в полном объеме, но вы можете себе представить, как я пытаюсь работать с моделью. Мне интересно, если это хорошая стратегия кодирования Zend?

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

Я не могу не думать, что есть лучший способ, но я стараюсь избегать прямого доступа к модели.

Спасибо заранее!

ответ

1

Вы должны работать с полными объектами, а не разрушения и восстановления их атрибутов.

Zend имеет слой абстракции DB, который можно использовать для быстрой работы с ним. Посмотрите на эти

http://framework.zend.com/manual/en/zend.db.html http://framework.zend.com/manual/en/zend.db.table.html

В качестве отправной точки, начать прохождение полного (предпочтительней передачи данных) объектов к виду.

//This is just a simple example, I'll leave it up to you how you want to organize your models. You can use several strategies. At work we use the DAO pattern. 
$user = $userModel->getUser($id); 
$this->view->user = $user; 

And in your view, 

Name : <?=$this->user->name?> <br> 
About me : <?=$this->user->about?> <br> 
+0

Спасибо! Итак, если я передаю объекты и получаю доступ к элементам модели из представления, мне все еще нужно избегать переменных? –

+0

Эскапинг - это совсем другое дело. Но да, вам придется делать кодирование вывода, когда вы его показываете. – JohnP