• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
clone در شی گرایی به چه معناست؟
#1
سلام دوستان،

لطفا یکی واضح بگه که clone در شی گرایی به چه معنی هست و کی استفاده میشه و کی استفاده نمیشه!


سپاس Heart
غایب
  پاسخ
تشکر شده توسط :
#2
در مورد تابع clone


کد پی‌اچ‌پی:
class CopyMe {}
$first = new CopyMe();
$second $first
تو php4 وقتي اين كد رو اجرا ميكردي $first و $second دو تا شي مجزا بودن ولي تو php5 با اجراي اين كد $first به $second رفرنس ميده يعني چي ؟ يعني اينكه هر تغييري تو $first بيوفته تو $second هم اعمال ميشه

حالا يه وقت هست ما مي خواييم تابع رو كپي كنيم و رفرنس نديم تو اين جا مياييم از clone استفاده ميكنيم

يه مثال ميزنم بهتر جا بيوفته
کد پی‌اچ‌پی:
<?php
class copyme
{
    public 
$name="naser";

}

$first=new copyme();
echo 
$first->name."<br>";
$second=$first;
$second->name="ahmad";
echo 
$first->name."<br>";
echo 
$second->name;
?>
خروجي كد بالا چيه

کد:
naser
ahmad
ahmad

حالا به مثال زير توجه كن
کد پی‌اچ‌پی:
<?php
class copyme
{
    public 
$name="naser";

}

$first=new copyme();
echo 
$first->name."<br>";
$second=clone $first;
$second->name="ahmad";
echo 
$first->name."<br>";
echo 
$second->name;
?>

به خروجيش توجه كن ببين چه فرقي با قبلي كرد

کد:
naser
naser
ahmad

حالا يه موقع هست كه شما مي خوايي از كپي شدن يه تابع جلوگيري كني

کد پی‌اچ‌پی:
<?php
class copyme
{
    public 
$name="naser";
    
    public function 
__clone()
    {
        die(
"can't copy this object");
    }
}

$first=new copyme();
echo 
$first->name."<br>";
$second=clone $first;
$second->name="ahmad";
echo 
$first->name."<br>";
echo 
$second->name;
?>

خروجيش هم ميشه
کد:
naser
can't copy this object
  پاسخ
تشکر شده توسط : oia zoghal cyletech amir.s Alimokhlesi


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان