Zend Simple View-Controller-Model Guidelines - PullRequest
0 голосов
/ 02 апреля 2012

Я новичок в Zend Framework, поэтому, пожалуйста, потерпите меня.

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

//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?

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

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

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Проверьте эти слайды от руководства команды ZF о моделировании ваших объектов.

http://www.slideshare.net/weierophinney/playdoh-modelling-your-objects

1 голос
/ 02 апреля 2012

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

У Zend есть уровень абстракции БД, который вы можете использовать для быстрой работы с ним.Взгляните на эти

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...