【发布时间】:2018-01-21 11:19:10
【问题描述】:
我已经使用 PHP 开发了几年,但我经常质疑的一件事是我是否应该像这样构建我的页面:
if(getValue('action') == "jobsFilter" && getValue('jobType') == "open")
{
$job->FetchJobs($jobStatus = 1);
foreach($job->result AS $pulledJob)
{
?>
<div class = "openJob panelJob col-xs-12">
<h2><?php echo $pulledJob['jobTitle'] ?></h2>
<a href = "?action=viewJob&jobId=<?php echo $pulledJob['Id'] ?>" class = "viewJobBtn ">View Job</a>
</div>
<?php
}
}else if(getValue('action') == "jobsFilter" && getValue('jobType') == "active")
{
$job->fetchAllJobsAppliedToUser($jobStatus = 1);
foreach($job->result AS $pulledJob)
{
?>
<div class = "openJob panelJob col-xs-12">
<h2><?php echo $pulledJob['jobTitle'] ?></h2>
<a href = "?action=viewJob&jobId=<?php echo $pulledJob['Id'] ?>&jobStatus=1" class = "viewJobBtn ">View Details</a>
</div>
<?php
}
}else if(getValue('action') == "viewJob" && isset($_GET['jobId']))
{
$job->FetchJobs($jobStatus = 1, $jobId = $_GET['jobId']);
foreach($job->result AS $pulledJob)
{
?>
<div class = "viewJob panelJob col-xs-12">
<div class = "pulledJobInfo">
<h2><?php echo $pulledJob['jobTitle'] ?></h2>
<p><?php echo $pulledJob['JobDescription'] ?></p>
</div>
<form method = "post" action = "?action=acceptJob">
<input type = "submit" name = "acceptJobSubmitBtn" class = "acceptJobBtn fullWidthButton ctaButton" value = "Let me help" />
<input type = "hidden" name = "jobId" value = "<?php echo $pulledJob['Id'] ?>" />
</form>
</div>
<?php
}
}
或者我是否应该有一个单独的页面,称为 open-jobs.php 用于打开的工作,closed-jobs.php 用于关闭的工作等。
如果有人能阐明最佳解决方案,那就太好了!
【问题讨论】:
-
这主要是一个基于意见的问题。但是,您现在可以开始查看 mvc 框架以获得更好的程序结构
-
您在 API 中使用单个页面来表示“动作”动词。然而,与其使用多个“if”条件(或者最好是“switch”语句),不如实现一个控制器,加载一个专门用于处理动作的对象。该对象为每种类型的操作提供方法。
-
感谢您的建议。我从来没有正确地研究过 MVC。目前,我只是为我的创业公司打造一个 MVP,所以坚持我所知道的。然而,在未来,我计划研究更多 MVC 驱动的语言,例如 Ruby On Rails。
-
@Arkascha 您能否详细说明我将如何实现类似的东西?我想我理解逻辑,但我不太确定控制器加载对象是什么意思。我已经离开 OOP 几个月了,即使我深陷其中,我的职业生涯也将我推向了 SQL 开发,哈哈
-
您会发现许多此类控制器的示例。他们在典型的 php 应用程序中基本上做的是:基于 php 的自动加载功能(基于字符串工作)加载一些类定义。然后实例化该类的一个对象(这里可能是类“Job”),在该对象内部调用一个方法(可能称为“过滤器”或“视图”)。