아래 코드를 살펴보십시오. PHP 기술자가 필요로하는 의견
이 기존 프로젝트의 코드 파일 중 하나입니다
require_once("initvars.inc.php");
require_once("config.inc.php");
?>
<?php
if($latestads_count)
{
?>
<div class="latestposts">
<div class="head"><?php echo $lang['LATEST_ADS']; ?></div>
<table border="0" cellspacing="0" cellpadding="0" class="postlisting" width="100%">
<?php
$sql = "SELECT a.*, ct.cityname, UNIX_TIMESTAMP(a.createdon) AS timestamp, feat.adid AS isfeat,
COUNT(*) AS piccount, p.picfile AS picfile, scat.subcatname, scat.catid, cat.catname
FROM $t_ads a
INNER JOIN $t_cities ct ON a.cityid = ct.cityid
INNER JOIN $t_subcats scat ON a.subcatid = scat.subcatid
INNER JOIN $t_cats cat ON scat.catid = cat.catid
LEFT OUTER JOIN $t_featured feat ON a.adid = feat.adid AND feat.adtype = 'A' AND feat.featuredtill >= NOW()
LEFT OUTER JOIN $t_adpics p ON a.adid = p.adid AND p.isevent = '0'
WHERE $visibility_condn
$loc_condn
GROUP BY a.adid
ORDER BY a.createdon DESC
LIMIT $latestads_count";
$res_latest = mysql_query($sql) or die($sql.mysql_error());
$css_first = "_first";
while($row = mysql_fetch_array($res_latest))
{
$url = buildURL("showad", array($xcityid, $row['catid'], $row['catname'],
$row['subcatid'], $row['subcatname'], $row['adid'], $row['adtitle']));
?>
<?php
if($row['isfeat'])
{
//$feat_class = "class=\"featured\"";
$feat_img = "<img src=\"images/featured.gif\" align=\"absmiddle\">";
}
else
{
//$feat_class = "";
$feat_img = "";
}
if($row['picfile'])
{
$picfile = $row['picfile'];
$imgsize = GetThumbnailSize("{$datadir[adpics]}/{$picfile}", $tinythumb_max_width, $tinythumb_max_height);
}
else
{
$picfile = "";
}
?>
<tr>
<td width="15">
<img src="images/bullet.gif" align="absmiddle">
</td>
<td>
<b><a href="<?php echo $url; ?>" <?php echo $feat_class; ?>><?php echo $row['adtitle']; ?></a></b>
<?php if(0&&$row['picfile']) { ?><img src="images/adwithpic.gif" align="absmiddle"><?php } ?>
<?php echo $feat_img; ?><br>
<span class="adcat">
<?php echo "$row[catname] $path_sep $row[subcatname]"; ?>
<?php
$loc = "";
if($row['area']) $loc = $row['area'];
if($xcityid < 0) $loc .= ($loc ? ", " : "") . $row['cityname'];
if($loc) echo "<br>$loc";
?>
</span>
</td>
<td align="right" width="<?php echo $tinythumb_max_width; ?>">
<?php if($picfile) { ?>
<a href="<?php echo $url; ?>"><img src="<?php echo "{$datadir[adpics]}/{$picfile}"; ?>" border="0" width="<?php echo $imgsize[0]; ?>" height="<?php echo $imgsize[1]; ?>" style="border:1px solid black"></a>
<?php } ?>
</td>
</tr>
. 보시다시피, 그것은 html, sql, php가 모두 섞여 있습니다. 그리고 유지하기가 분명히 어렵습니다.
이 응용 프로그램에는 비슷한 크기와 유형의 파일이 약 55 개 있습니다.
는이 코드를 리팩토링하려면, 아래 그렇게 내 목적이다 :
1) 쉬운 유지.
2) 추가 기능을 추가하여 쉽게 확장 할 수 있습니다.
3)이 코드를 다르고 약간 비슷한 응용 프로그램에서 재사용 할 수 있어야합니다.
1) 우리는 MVC 응용 프로그램에이 코드를 리팩토링 할 수 있다고 생각하십니까 :
나는 위의 사실에 따라 질문의 번호가?2) 가능한 경우. 전문가 프로그래머라면 전체 프로젝트 (55 개 파일)를 리펙토링하는 데 얼마나 많은 시간이 걸릴 것인가?
3) 위 코드를 다시 사용해야합니까, 아니면 기존 mvc 프레임 워크로 처음부터 시작해야합니까?
4) 심포니, 젠드 등 기존의 MVC 프레임 워크를 사용하는 경우에 대비하여 전체 프로젝트를 완료하는 데 얼마의 시간이 필요합니까?
5)이 사이트는 현재까지 MySQL이 MySQL을 실행하기 때문에 (mysql에서 현재 db가 완료됨에 따라) 모델에서 데이터 추상화/데이터 액세스 레이어를 허용해야합니까? (Mysql보다 성능이 좋다고 가정하면이 점에 대해 확실하지 않습니다.)
7) 하위 레이어를 포함하도록 코드를 쉽게 리팩토링 할 수 있습니까? 모델 (데이터 추상화/액세스),보기 (추가 템플릿, 논리보기 등), 컨트롤러 등을 포함 할 수 있습니다.
8) mvc는 갈 길이 멀지 만 (사이트가 수십만 명의 사용자를 대상으로한다고 가정 할 때)보다 나은 패턴/방법이 있습니까?
위대한 제프, 그건 내가 찾던 정보/대답 ... 친절하게도 다른 사람들도 경험을 공유 할 것입니다. – user481913
안녕하세요 제프, 감사합니다 .... 나는 당신에게 또 다른 질문을하고 싶었습니다 ... 그리고 나는 당신이 내 다음 질문을하는 동안 당신의 대답을 받아 들일 것이라고 생각했습니다. 나는 당신이 대답 해주기를 바랍니다 ...하지만 나는 생각합니다. 나는 다음 번에 그것을 지킬거야. :) – user481913