PDA

View Full Version : حرفه ای: کلاس ها و پترن ها(دسته بندی کلاس ها)



masiha68
چهارشنبه 09 بهمن 1392, 15:11 عصر
سلام به همگی
دارم یه سی ام اس بر اساس oop می نویسم ولی در مورد درست کردن کلاس ها به مشکل بر خوردم . به نظرتون مثلا فانکشن های ارسال پست رو به صورت کلاس در بیارم یا نه کلا فانکش های insert رو یک کلاس کنم . و اینکه ایا بهتره خود فرم ها رو هم به صورت یک تابع توی کلاس قرار بدم یا نه بیرون کلاس باشن
یه جا خوندم نوشته بود باید از پترن دیزاین ها استفاده کنی
در کل الان چن روزه هی دارم طرح عوض می کنم مثلا یه بار کلاس پیجینگ رو هم توی کلاس ارسال مقاله میارم و یه بار به صورت جدا توی فرم درجش می کنم (چرا ؟) خب فرض می کنم من توی یه سیستم دیگه ای از کلاس درج مقاله استفاده کردم ولی نیازی به کلاس پیجینگ نداشت !!!!(و یا کلاس دسته بندی) حوصله میخاد بازم بیام کلاس پیجینگ رو از کلاس مقاله بیارم بیرون
این یه نمونه از کلاس من واسه درج مقاله ست که من توش کلاس پیجینگ و دسته بندی رو اضافه کردم و هرجا نیاز باشه فقط فراخوانیشون می کنم ولی حس می کنم این کار درست نیست ... به نظرتون مشکل کجای کاره ؟؟؟؟

<?php
class post
{
private $dbcon,$useaction,$tablename='post';
public $error,$result,$numpageshowonpost=15;

function __construct()
{
$this->useaction=new useaction;

require_once 'FluentPDO.php';
db::con();
$dbcon= $this->con=$this->connection ;
$mim=new db($dbcon);
return $this->dbcon=$mim;

}


function doinsertpost ($title,$body,$auther,$time,$date,$tag,$state,$cat ,$more)
{
$pop=array('title'=>$title,'body'=>$body,'auther'=>$auther,'time'=>$time,'date'=>$date,'tag'=>$tag,'state'=>$state,'cat'=>$cat,'more'=>$more);

$oo=$this->dbcon->insertInto($this->tablename,$pop)->execute() ;
if($oo)
{
echo "ارسال شد";
}
else
{
echo "شرمنده اخلاق ورزشیتم ... نشد . ببین کجا گند زدی";
}

}
####################
function showpost($where=none,$limit='15')
{
if($where==none)
{

$query=$this->dbcon->from($this->tablename)->limit($limit)->orderBy("id desc")->execute() ;
}
else
{
$query=$this->dbcon->from($this->tablename)->limit($limit)->orderBy("id desc")->where($where)->execute() ;
}

return $this->result=$query->fetchall();
}
############################

function del_to_trash($id)
{
$query=$this->dbcon->update($this->tablename)->where('id',$id)->set('state','2')->execute();
if($query)
{

echo "مقدار حذف شد";
}
else
{
echo "حذف انجام نشد .";

}
}

function dispalyformshowpost()
{
?>
<table id="sample-table-2" class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th class="center">
<label>
<input type="checkbox" />
<span class="lbl"></span>
</label>
</th>
<th>عنوان</th>
<th>مشاهده</th>
<th class="hidden-480">دیدگاه ها</th>

<th class="hidden-phone">
<i class="icon-time bigger-110 hidden-phone"></i>
تاریخ
</th>
<th class="hidden-480">دسته بندی</th>

<th></th>
</tr>
</thead>

<?php



foreach($this->result as $row)
{

?>




<tbody align="center">
<tr align="center">
<td class="center">
<label>
<input type="checkbox" />
<span class="lbl"></span>
</label>
</td>

<td>
<?php echo $row['title'];?>
</td>
<td><?php echo $row['view'];?></td>
<td class="hidden-480"><?php echo "5";?></td>
<td class="hidden-phone"><?php echo $row['date'];?></td>

<td class="hidden-480"><span class="label label-warning"><?php echo $row['cat'];?></span></td>

<td class="td-actions">
<div class="hidden-phone visible-desktop action-buttons">
<a class="blue" href="<?php URL ?>?id=<?php echo $row['id'];?>">
<i class="icon-zoom-in bigger-130"></i>
</a>

<a class="green" href="?id=<?php echo $row['id'];?>&action=editdata">
<i class="icon-pencil bigger-130"></i>
</a>

<a class="red" href="?id=<?php echo $row['id'];?>&action=deldata" >
<i class="icon-trash bigger-130"></i>
</a>
</div>

<div class="hidden-desktop visible-phone">
<div class="inline position-relative">
<button class="btn btn-minier btn-yellow dropdown-toggle" data-toggle="dropdown">
<i class="icon-caret-down icon-only bigger-120"></i>
</button>

<ul class="dropdown-menu dropdown-icon-only dropdown-yellow pull-right dropdown-caret dropdown-close">
<li>
<a href="#" class="tooltip-info" data-rel="tooltip" title="View">
<span class="blue">
<i class="icon-zoom-in bigger-120"></i>
</span>
</a>
</li>

<li>
<a href="#" class="tooltip-success" data-rel="tooltip" title="Edit">
<span class="green">
<i class="icon-edit bigger-120"></i>
</span>
</a>
</li>

<li>
<a href="#" class="tooltip-error" data-rel="tooltip" title="Delete">
<span class="red">
<i class="icon-trash bigger-120"></i>
</span>
</a>
</li>
</ul>
</div>
</div>
</td>
</tr>
</tbody>
<?php

}
?>
</table>
<?php
}


###########################
function displayformeditpost()
{
foreach($this->result as $row)
{
?>
<form method="post">
<div class="widget-box position-relative" dir="rtl" >
<div class="widget-header">
<h5 class="smaller"><input type="submit" value="ویرایش اطلاعات" class="btm" /></h5>

<div class="widget-toolbar no-border">
<ul class="nav nav-tabs" id="myTab">
<li class="active">
<a data-toggle="tab" href="#home">عنوان</a>
</li>

<li>
<a data-toggle="tab" href="#profile">کلمات کلیدی</a>
</li>

<li>
<a data-toggle="tab" href="#info">توضیحات کوتاه</a>
</li>
<li>
<a data-toggle="tab" href="#time">زمان</a>
</li>
<li>
<a data-toggle="tab" href="#cat">دسته بندی</a>
</li>
</ul>
</div>
</div>

<div class="widget-body">
<div class="widget-main padding-6">
<div class="tab-content">
<div id="home" class="tab-pane in active">

<input type="text" name="title" value="<?php echo $row['title']?>" style="width:500px;" >
</div>

<div id="profile" class="tab-pane" title="کلمات کلیدی را با + از هم جدا کنید">
<input type="text" name="tag" title="کلمات کلیدی را با + از هم جدا کنید" onClick="value=''" value="<?php echo $row['tag']?>" style="width:500px;">
</div>

<div id="info" class="tab-pane">

<textarea id="pop2" name="more" dir="rtl"></textarea>
</div>
<div id="time" class="tab-pane" align="center">

<input type="text" name="time" value="<?php echo $row['time']?>" style="width:100px" /><input type="text" name="date" value="<?php echo $row['date']?>" style="width:100px" />
</div>
<div id="cat" class="tab-pane" align="center">
<?php
$cat=new cat;
$cat->showcatonpost();
?>
</div>
</div>
</div>
</div>
</div>
<textarea id="pop" name="body" dir="rtl"><?php echo $row['body']?></textarea>
</form>

<?php
}
}

###########
function showpage()
{
if(class_exists(paging))
{


$page=new paging;
$page->numpageshow =$this->numpageshowonpost ;
$page->getpaging($this->tablename);
}
else{
echo "کلاس صفحه بندی وجود ندارد ";
}
}

}

?>

mbf5923
چهارشنبه 09 بهمن 1392, 16:05 عصر
سلام
برای این کار بهتره یه کلاس کلی ایجاد کنید که فانکشن ها رو مدیریت کنه و مابقی فانکشن ها که به صفحات مربوط میشن رو خارج از اون کلاس تعریف کنید.
در ضمن همه چیز رو کلاس نکنید چون باعث هررفت حافظه سرور خواهد بود

masiha68
چهارشنبه 09 بهمن 1392, 17:47 عصر
سلام
برای این کار بهتره یه کلاس کلی ایجاد کنید که فانکشن ها رو مدیریت کنه و مابقی فانکشن ها که به صفحات مربوط میشن رو خارج از اون کلاس تعریف کنید.
در ضمن همه چیز رو کلاس نکنید چون باعث هررفت حافظه سرور خواهد بود
منظورتون از یک کلاس کلی چیه ؟ و اینکه چطوری فانکشن ها رو مدیریت کنه
در مورد خارج کردن فرم ها از کلاس تقریبا باهاتون موافقم ولی فک کنم اگه بخوام یه کلاس کامل داشته باشم باید همه چی توش باشه چون طراحی فرم مجدد هم کارایی یک کلاس رو مختل می کنه