Bir PHP Teknik Mimar gerekli Görüşler

0 Cevap php

Aşağıdaki kodu bakınız.

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>

Bu mevcut bir projeden kod dosyaları biridir. Gördüğünüz gibi, html, sql, php hep birlikte intermixed ... ve bakımı oldukça zordur vardır.

Bu uygulamada benzer boyut ve tipte yaklaşık 55 dosya vardır.

Bu kod refactor istiyorum ve aşağıda benim hedefleri bunu yapmak içindir:

1) Kolay korumak için.

2) ek özellikler ekleyerek kolayca uzatmak mümkün olun.

3) farklı ama biraz benzer uygulamalar için bu kodu yeniden mümkün olun.

Ben yukarıdaki gerçeklere dayalı sorunun bir dizi var:

1) Eğer biz bir mvc uygulama içine bu kodu refactor düşünüyor musunuz?

2) Mümkün olursa. ne kadar zaman bir uzman programcı için, diyelim ki bütün projeyi (55 dosyalar) refactor almalıdır?

3) i yukarıdaki kodu yeniden mi, ya da ben varolan bir mvc framework ile sıfırdan başlamak gerekir?

Biz Symfony, Zend vs demek varolan mvc framework için gitmek durumda 4) Biz, bütün projeyi tamamlamak için ne kadar zaman gerekiyor?

5) bilgime göre Bu site şimdiye kadar Mysql aday olacağını sadece (mevcut db mysql yapıldığı gibi). Veri soyutlama / veri (ben bu konuda emin değilim, Mysql daha iyi yapar bir şey var varsayarak) modeli katmanları acces için biz izin vermelidir

7) biz kolayca) modeli için (veri soyutlama / erişim alt katmanları eklemek için kod refactor Can, görünümü (ayrıca şablonları, bakış mantığı vb), kumanda vb durumda biz gelecek ya da biz gereken olacağını yapmak istiyorum sıfırdan başlamak?

8) gitmek için yol MVC, veya (siteyi supposing yüz binlerce kullanıcı) için tasarlanmıştır daha iyi bir model / bir yolu var mı?

0 Cevap