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, или для этого требуется дополнительная структура?
Ответы
Ответ 1
Не родное, но лучшее решение, позволяющее использовать ваши собственные классы или стандартный класс...
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();
Ответ 2
Построено в PHP? Нет.
Ответ на фреймворк, на который вы намекаете, - это то, где вам нужно пойти для этого (в конце концов, ASP.NET тоже является каркасом)
Ответ 3
То, что вы ищете, это слой ORM (привязка к объектам). PHP имеет пару, одна из которых Доктрина. Тем не менее, ответ mahomedalidp очень удобен для того, чтобы все было сделано на PHP.
Ответ 4
Для этого ничего не встроено в PHP. Но легко реализовать в вашем классе EntryForm. Вы можете добавить public function populate($post)
в EntryForm
и передать ему переменную $_POST. Он будет прокручиваться, и если атрибут класса существует, установите его. Фактически вы можете создать абстрактный класс, который реализует populate()
и расширяет его с помощью EntryForm или любой другой формы, которую вы хотите. Разумеется, вы тоже захотите санировать вход.