php在clone时访问原对象内容

WBOY
Libérer: 2016-06-06 20:44:54
original
743 Les gens l'ont consulté

$p2 克隆自 $p1,我希望在 __clone() 注释的位置输出一句“我克隆自:Evan”,应该怎么写?
仿佛听说有 $that 这个东西,但是不能用。在 Manual 中也没有找到相关的介绍。
代码如下:

<code><?php class Person {
    private $name;

    function __construct($name="") {
        $this -> name = $name;
    }

    function __clone() {
        $this -> name = "WenryXu";
        //echo "我克隆自:".name
    }

    function say()  {
        echo "我的名字是:".$this -> name."<br>";
    }
}

$p1 = new Person("Evan");
$p1 -> say();
$p2 = clone $p1;
$p2 -> say();
</code>
Copier après la connexion
Copier après la connexion

期望的结果是:

<code>我的名字是:Evan
我克隆自:Evan
我的名字是:WenryXu
</code>
Copier après la connexion
Copier après la connexion

谢谢各位!

回复内容:

$p2 克隆自 $p1,我希望在 __clone() 注释的位置输出一句“我克隆自:Evan”,应该怎么写?
仿佛听说有 $that 这个东西,但是不能用。在 Manual 中也没有找到相关的介绍。
代码如下:

<code><?php class Person {
    private $name;

    function __construct($name="") {
        $this -> name = $name;
    }

    function __clone() {
        $this -> name = "WenryXu";
        //echo "我克隆自:".name
    }

    function say()  {
        echo "我的名字是:".$this -> name."<br>";
    }
}

$p1 = new Person("Evan");
$p1 -> say();
$p2 = clone $p1;
$p2 -> say();
</code>
Copier après la connexion
Copier après la connexion

期望的结果是:

<code>我的名字是:Evan
我克隆自:Evan
我的名字是:WenryXu
</code>
Copier après la connexion
Copier après la connexion

谢谢各位!

代码如下,应该不难想的

<code class="lang-php"><?php header("Content-Type: text/plain; charset=utf-8");

class Person {
    private $name;

    function __construct($name="") {
        $this -> name = $name;
    }

    function __clone() {
        echo "我克隆自:".$this -> name."\n";
        $this -> name = "WenryXu";
    }

    function say()  {
        echo "我的名字是:".$this -> name."\n";
    }
}

$p1 = new Person("Evan");
$p1 -> say();
$p2 = clone $p1;
$p2 -> say();
</code>
Copier après la connexion

<code class="lang-php"><?php class Person {
    private $name;

    function __construct($name="") {
        $this->name = $name;
    }

    function __clone() {
        echo "我克隆自:" . $this->name . "\n";
        $this->name = "WenryXu";
    }

    function say()  {
        echo "我的名字是:".$this->name."\n";
    }
}

$p1 = new Person("Evan");
$p1->say();
$p2 = clone $p1;
$p2->say();
</code>
Copier après la connexion

这样就可以了
事实上 clone 只是浅复制
复制时对象内的成员变量都只是引用
所以直接调用就能获取到原来的值

输出
我的名字是:Evan
我克隆自:Evan
我的名字是:WenryXu

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!