PHP формируют сообщение, автоматически отображаясь на объект (привязка модели)

Я делаю большую разработку ASP.NET MVC 2, но я занимаюсь маленьким проектом на работе, и это должно быть сделано в PHP.

Действительно ли там что-нибудь встроено к PHP, чтобы сделать привязку модели, отображая поля сообщения формы на класс? Часть моего кода PHP в настоящее время похожа на это:

class EntryForm
{
    public $FirstName = "";
    public $LastName = "";
}

    $EntryForm = new EntryForm();

if ($_POST && $_POST["Submit"] == "Submit")
{
    $EntryForm->FirstName = trim($_POST["FirstName"]);
    $EntryForm->LastName = trim($_POST["LastName"]);
}

Действительно ли там что-нибудь встроено к типичной установке PHP, которая сделала бы такое отображение как, Вы найдете в ASP.NET MVC, или это требует дополнительной платформы?

13
задан Pete Nelson 2 June 2010 в 14:10
поделиться

4 ответа

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

function populateWithPost ($obj = NULL)
{
  if(is_object($obj)) {

  } else {
      $obj = new StdClass ();
  }

  foreach ($_POST as $var => $value) {
      $obj->$var = trim($value); //here you can add a filter, like htmlentities ...
  }

  return $obj;
}

И тогда вы сможете использовать его как:

class EntryForm
{
    public $FirstName = "";
    public $LastName = "";
}

$entry = populateWithPost(new EntryForm());

или

 $obj = populateWithPost();
10
ответ дан 2 December 2019 в 00:57
поделиться

Встроено в PHP? Нет.

Ответ фреймворка, на который вы намекаете, - это то место, куда вам нужно обратиться для этого (в конце концов, ASP.NET тоже фреймворк)

1
ответ дан 2 December 2019 в 00:57
поделиться

То, что вы ищете - это уровень ORM (Object Relationship Mapping). В PHP есть несколько, один из которых - Doctrine. Тем не менее, ответ mahomedalidp очень удобен для работы в PHP.

1
ответ дан 2 December 2019 в 00:57
поделиться

Для этого в PHP ничего не встроено. Но легко реализовать в вашем классе EntryForm. Вы можете добавить общедоступную функцию populate ($ post) в EntryForm и передать ей переменную $ _POST. Он будет проходить через цикл и, если атрибут класса существует, установить его. Фактически, вы можете создать абстрактный класс, реализующий populate () , и расширить его с помощью EntryForm или любой другой формы по вашему желанию. Конечно, вы также захотите дезинфицировать ввод.

0
ответ дан 2 December 2019 в 00:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: