2013-06-17 1 views
0

Следуя многим учебным пособиям официальных и неофициальных документов, нет такого четкого видения общего подхода для создания редактирования объекта и обновления только определенных полей.Практика подхода CRUD

Основные вопросы: 1 - Создать объект - заполнить форму, проверять, создавать объект сущности и заполнить его с exchangeArray, а затем сохранить в способе экономии по документации мы должны настроить массив из Переданного объекта как:

$data = array(
      'artist' => $album->artist, 
      'title' => $album->title, 
     ); 

Можем ли мы избежать повторной настройки массива в методе сохранения?

2 - Обновление сущности - то же логика

3 - Что делать, если мы хотим обновить только один конкретное поле? Я передаю массив методу updateEntity, но является ли обычным способом передать объект (и настроить массив внутри метода), чтобы сохранить метод и передать массив для обновления метода?

4 - Почти то же самое с 3, но теперь, когда у нас есть массив с другими ключами между нашими ключами полей объектов, мы можем удалить «плохие» ключи массива с помощью гидратора и сделать что-то вроде стиля array_intersect, но что вы предлагаете?

+0

Что вы хотите сказать? –

+0

мой вопрос: какова наилучшая практика внедрения crud-системы в ZF2 с учетом упомянутых случаев. – Cassius

ответ

-3

PHP, вопреки другим языкам, ориентирован на центр, чем объект. Большинство задач можно выполнить с помощью массива. В этом случае вместо использования

<?php 
class SomeClass { 
    public $artist; 
    public $title; 
} 
$album=new SomeClass(); 
$data = array(
     'artist' => $album->artist, 
     'title' => $album->title, 
    ); 
?> 

Мы должны использовать

<? 
$SomeObject=array("artist"=>xxx,"title"=>xxxx); 

$data = $someObject; 
?> 

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

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

<?php 
class SomeClass { 
    public $artist; 
    public $title; 
} 
$album=new SomeClass(); 
$data = (array)$album; 
?> 

Однако это преобразование иногда сложно.

0

Вы можете использовать интеллектуальную комбинацию своей сущности, формы, фильтра ввода и гидратора, чтобы практически не иметь логики, чтобы сделать вещи CRUD. Для интерфейса администратора я обычно генерирую свой контроллер, форму и другие классы. Я использую Sublime Text 2, а фрагменты для создания этих классов можно найти в моем repository.

Это приводит к:

  1. Контроллер с индексом (листинг), вид (одиночный элемент), создавать, обновлять и удалять
  2. форму, чтобы содержать все поля сущностей
  3. Хранилище (Доктрины) для запроса сущностям
  4. услугу сохраняться в базе данных (либо создать, сохранить один или удалить один)

Это будет решить # 1 и # 2. Из-за того, как работает фильтрация и гидратация ZF2, это также решит №4 для вас. Затем можно установить только номер выбора. полей для фильтрации, но я еще не реализовал это (пока). Я могу только обратиться к the manual, чтобы знать, как это сделать.

Если вы хотите узнать о реализации вышеприведенных фрагментов, взгляните на Soflomo\Portfolio, который использует аналогичную стратегию.

Смежные вопросы