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