以下のコードをご覧ください。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>
これは、既存のプロジェクトからコードファイルの1つです。あなたが見ることができるように、それはhtml、sql、phpをすべて混在させています...そして明らかに維持することは難しいです。
このアプリケーションには、類似のサイズとタイプのファイルが約55あります。
私はこのコードをリファクタリングしたい、と以下のように行うための私の目標です:保守が容易)
1。
2)追加機能を追加することで簡単に拡張できます。
3)異なるが多少類似したアプリケーションにこのコードを再利用できるようにする。
私は上記の事実に基づいて、質問の数があります
1)あなたは、我々は、MVCアプリケーションにこのコードをリファクタリングすることができると思いますか?
2)できる場合。プロジェクト全体(55ファイル)をリファクタリングするのにどれくらいの時間が必要ですか?
3)私は上記のコードを再利用するか、既存のmvcフレームワークを使用して最初から開始すべきですか?
4)symfonyやzendなど、既存のmvcフレームワークを使用する場合、プロジェクト全体を完了するまでにどれくらいの時間が必要ですか?
5)私の知る限りでは、現在のサイトはmysqlのみを実行します(現在のdbはmysqlで実行されるため)。モデルのデータ抽象化/データアクセスレイヤーを許すべきか(Mysqlより優れた性能があるとすれば、これについてはわかりません)
7)私たちは簡単にサブレイヤーを含むコードをリファクタリングできますか?モデル(データ抽象化/アクセス)、ビュー(さらなるテンプレート、ビューロジックなど)、コントローラなど、我々が将来的にそれをしたい場合、
8)mvcは行く方法ですか、それよりも優れたパターン/方法があります(サイトが何十万人ものユーザーを対象としているとします)。
偉大なジェフ、それは私が探していた情報/答えのようなものです...うまくいけば、他の人たちも経験を共有してくれるはずです。 – user481913
こんにちはジェフ、ありがとう....私はあなたに別の質問をしたいと思っていました...そして、私はあなたの答えを受け入れてくれると思っていました。私は次回のためにそれを保つつもりです。 :) – user481913