> 백엔드 개발 > PHP 튜토리얼 > php在clone时访问原对象内容

php在clone时访问原对象内容

WBOY
풀어 주다: 2016-06-06 20:44:54
원래의
789명이 탐색했습니다.

$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>
로그인 후 복사
로그인 후 복사

期望的结果是:

<code>我的名字是:Evan
我克隆自:Evan
我的名字是:WenryXu
</code>
로그인 후 복사
로그인 후 복사

谢谢各位!

回复内容:

$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>
로그인 후 복사
로그인 후 복사

期望的结果是:

<code>我的名字是:Evan
我克隆自:Evan
我的名字是:WenryXu
</code>
로그인 후 복사
로그인 후 복사

谢谢各位!

代码如下,应该不难想的

<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>
로그인 후 복사

<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>
로그인 후 복사

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

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

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿