آموزش php از مبتدی تا ....
Відкрити в Telegram
902
Підписники
Немає даних24 години
Немає даних7 днів
Немає даних30 днів
Архів дописів
ولی فرض کنیم یک فایل داریم در ان یک یک نمودار قرار دارد اگر با inclde فایل را ضمیمه کنیم با هر بار تازه سازی نمودار مجددا ترسیم می شود و خروجی نامطلوب ایجاد می شود
در کد بالا چون در فایل class.php فقط کلاس وجود دارد اگر هنگام فراخوانی ان در صفحه جدید صفحه تازه سازی شود اتفاقی نمی افتد و فایل مجددا ضمیمه صفحه جدید می شود
هنگامی شما قصد فراخوانی یک صفحه php رو به صفحه دیگر دارید با دستور include یا دستور requier این فراخوانی رو انجام می دهید.
متد include فراخوانی دستورات و توابع صفحه دیگر در بخش فعلی .
متد include_onceاگر فراخوانی تکراری باشد دیگر آن دستورات و توابع را به بخش مورد نظر اضافه نمی کند.
متد require عملکرد این دستور مشابه دستور include است ولی این دو دستور یک تفاوت با هم دارند .
تفاوت include و require:
اگر در فراخوانی با دستور include فایل مبداء را را به هر دلیلی پیدا نکند یا پاک شده باشد این دستور یک پیغام خطا می دهد و به روند اجرا ادامه میدهد.
در دستور require اگر فیل مبداء را به هر دلیلی پیدا نکند یا پاک شده باشد php از اجرای بقیه کدها جلوگیری می کند.
selectdb('school');
$db->showallrec('student','id','sname','sfamil','rname');
echo "
"; $db->showallrec('student','sname','sfamil'); ?>
"; $db->showallrec('student','sname','sfamil'); ?>
این کلاس را در فایلی با نام class.php ذخیره می نماییم در هر صفحه وبی که نیاز به اتصال به پایگاه داده داریم می توانیم ابتدا با دستور include فایل را ضممیه صفحه کرده بعد با تعریف شی از کلاس از متد های ان استقاده نماییم
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<?php
class database
{
private $con;
function __construct ($s,$u,$p)
{
@$this->con=mysql_connect($s,$u,$p);
if(!$this->con)
{
die('امکان اتصال به سرور بانک وجود ندارد'." ".mysql_error());
}
}
function __destruct()
{
@mysql_close($this->con);
}
public function selectdb($d)
{
@$t=mysql_select_db($d,$this->con);
if(!$t)
{
die('بانک اطلاعاتی وجود ندارد'." ".mysql_error());
}
}
public function showallrec( )
{
$m="";
$nr = func_num_args();
$arg_list = func_get_args();
echo "<table border=1 align=center width=70%>";
echo "<tr align=center>";
for ($i = 1; $i < $nr; $i++)
{
echo "<td> $arg_list[$i] </td>";
$m=$m.$arg_list[$i].',';
}
echo "</tr>";
$k="";
for($i=0;$i<strlen($m)-1;$i++)
$k=$k.$m[$i];
$q="select $k from $arg_list[0]";
$n=mysql_query($q);
while($r=mysql_fetch_array($n))
{
echo "<tr align=center>";
for ($i = 1; $i < $nr; $i++)
{
echo "<td>".$r[$arg_list[$i]]."</td>";
}
echo "</tr>";
}
echo "</table>";
}
}
?>
<body>
</body>
</html>
برای یک مثال عملی تر کلاسی را پیاده سازی می کنیم که از طریق ان بتوانیم به بانک اطلاعاتی متصل شده و یک جدول را انتخاب نموده و رکورد های ان را بازیابی نماییم
از طریق یک سازنده مقادیر نام سرور نام کاربریو رمز عبور را به کلاس ارسال می کنید
از طریق مخرب اصال به dbms را قطع می نماییم
متد selectdb را برای انتخاب یک پایگاه داده ایجاد می کنیم
متد showallrec را برای خواندن رکورد های از جدول تعیین شده بر اساس فیلد های بیان شده در متد ایجاد می کنیم
name=$x;
base::$this->famil=$y;
$this->avg=$z;
}
public function show()
{
echo $this->name." ";
echo $this->famil." ";
echo $this->avg."
"; } } class teacher extends base { private $job; public function get($x,$y, $z) { $this->name=$x; $this->famil=$y; $this->job=$z; } public function show() { echo $this->name." "; echo $this->famil." "; echo $this->job."
"; } } $s=new student; $s->get('ali','alavi',10); $s->show(); $t=new student; $t->get('babak','jamshidi',13); $t->show(); ?>
"; } } class teacher extends base { private $job; public function get($x,$y, $z) { $this->name=$x; $this->famil=$y; $this->job=$z; } public function show() { echo $this->name." "; echo $this->famil." "; echo $this->job."
"; } } $s=new student; $s->get('ali','alavi',10); $s->show(); $t=new student; $t->get('babak','jamshidi',13); $t->show(); ?>
اگر متغیر های کلاس پایه را به جای خصوصی به صورت محافظت شده تعریف نماییم می توانیم از انها در کلاس مشتق به طور مستقیم استفاده نماییم و دیگر نیازی به فراخوانی توابع show,get کلاس پایه نمی باشد
عبارت base::show(); که در متد showکلاس دانشجو نوشته شده است به این معنی می باشد که ابتدا متد show کلاس پایه فراخوانی شود و مقادیر نام و فامیل نمایش داده شود سپس مقدار معدل دانشجو
name=$x;
$this->famil=$y;
}
public function show()
{
echo $this->name." ";
echo $this->famil." ";
}
}
class student extends base
{
private $avg;
public function get($x,$y, $z)
{
base::get($x,$y);
$this->avg=$z;
}
public function show()
{
base::show();
echo $this->avg."
"; } } class teacher extends base { private $job; public function get($x,$y, $z) { base::get($x,$y); $this->job=$z; } public function show() { base::show(); echo $this->job."
"; } } $s=new student; $s->get('ali','alavi',10); $s->show(); $t=new student; $t->get('babak','jamshidi',13); $t->show(); ?>
"; } } class teacher extends base { private $job; public function get($x,$y, $z) { base::get($x,$y); $this->job=$z; } public function show() { base::show(); echo $this->job."
"; } } $s=new student; $s->get('ali','alavi',10); $s->show(); $t=new student; $t->get('babak','jamshidi',13); $t->show(); ?>
کلاس پایه : کلاسی ای که از ان ارث برده می شود
کلاس مشتق: کلاسی ای است که از کلاس پایه ارث می برد
برای پیاده سازی وراثت از عبارت extends هنگام تعریف کلاس مشتق استفاده می شود
هرگاه بخواهیم از متد های کلاس پایه در کلاس مشتق استفاده کنیم نام کلاس پایه به همراه :: بکار می بریم
وراثت
یک کلاس می تواند ویژگی های یک کلاس دیگر را به ارث ببرد در حالی که ویژگی های خود را دارا می باشد برای مثال در یک سیستم اموزشی که دانشجو و استاد وجود دارد دانشجو دارای (نام/فامیل/معدل) و استاد دارای (نام/فامیل/سابقه کار) باشد می توان کلاسی را به عنوان کلاس پایه تعریف نمود که دارای داده های مشرک (نام/فامیل) باشد سپس دو کلاس دیگر از این کلاس ارث ببرند کلاس دانشجو داده معدل را داشته باشد و کلاس استاد داده سابقه کار
