백엔드 개발 PHP 튜토리얼 PHP에서 객체 복사 및 복제

PHP에서 객체 복사 및 복제

Jun 28, 2018 pm 03:35 PM

* 객체 복사 및 복제

* 1. 기본적으로 객체는 참조로 전달됩니다(실제로는 객체 식별자의 복사본이며 나중에 자세히 설명합니다)

* 2. 즉, 두 객체 변수 실제로는 동일한 객체에 대한 참조입니다

* 3. 새 객체를 생성하려면 clone 키워드를 사용하여 현재 객체를 복제해야 합니다

* 4. clone 키워드 사용 시 __clone()이 있는 경우

* 5. __clone() 메소드는 새로 생성된 객체에서 실행됩니다

* 6. __clone() 메소드는 복사할 대상과 복제 시 완료할 기본 작업을 제어할 수 있습니다

class Member
{
    //声明三个私有属性
    private $name;  //会员名
    private $email; //会员邮箱
    private $score; //会员积分
    
    //构造方法
    public function __construct($name='',$email='',$score=0)
    {
        $this->name = $name;
        $this->email = $email;
        $this->score = $score;
    }
    
    //查询器(暂时省略访问控制)
    public function __get($name)
    {
        return $this->$name;
    }
    
    //设置器(暂时省略访问控制)
    public function __set($name,$value)
    {
        $this->$name = $value;
    }
    
    //克隆魔术方法在对象克隆时自动调用,针对新对象进行初始化操作
    public function __clone()
    {
        $this->score = 0;
    }
    
}
로그인 후 복사

// 멤버 클래스 Member 인스턴스화, 멤버 객체 생성 $member

$member = new Member('peter','peter@php.cn',1000);
로그인 후 복사

//액세스 테스트

echo $member->score;
로그인 후 복사
로그인 후 복사
로그인 후 복사

//멤버 객체 복사

$member1 = $member;
로그인 후 복사

//새 변수 이름 $member1을 사용하여 객체 정보 업데이트

$member1->score = 2000;
로그인 후 복사

//new 사용 액세스

echo $member1->score;
echo &#39;<hr>&#39;;
로그인 후 복사

에 개체 변수 이름 $member1//원래 개체 이름 $member를 사용하여

echo $member->score;
로그인 후 복사
로그인 후 복사
로그인 후 복사

에 액세스 * 결론:

* 1. 새로운 변수 수정 결과가 원래 개체 변수에 반영됩니다

* 2 . 이 두 변수는 실제로 동일한 객체를 가리킨다는 점을 설명하세요

* 3. 즉, 객체는 기본적으로 참조로 전달됩니다

* 4. 즉, 두 번째 변수 이름인 $member1은 의 별칭일 뿐입니다. 원래 변수이고 새 개체가 생성되지 않습니다

* 5. 그냥 원본 개체의 식별자에 대한 새 이름일 뿐이라고 이해하면 됩니다.

var_dump($member1);  //对象id=1
var_dump($member);   //对象id=1
로그인 후 복사

//$member1과 $member는 두 개의 동일한 개체라는 설명, 그냥 다른 이름으로

//완전히 새로운 객체를 생성하려면 어떻게 해야 할까요? clone

$member2 = clone $member;
로그인 후 복사

//먼저 객체 변수 $member2

echo $member2->score; //目前是原始值2000
로그인 후 복사
의 점수 속성 값을 확인하겠습니다.

//점수 값 수정

$member2->score = 5000;
echo &#39;<hr>&#39;;
로그인 후 복사

//$member2의 점수를 다시 확인하세요

echo $member2->score; //新值5000
echo &#39;<hr>&#39;;
로그인 후 복사

//생각해 보세요. 내 수정이 원래 $member 변수의 점수 속성 값에 영향을 미치나요?

echo $member->score; //发现原对象的score属性值仍为2000,未发生变化
로그인 후 복사

//왜 이것은 복제 기술을 사용하여 두 개의 완전히 다른 객체 변수를 생성했기 때문입니다

//아래에서 확인하세요

var_dump($member); //变量id是1
var_dump($member2); //变量id是2
로그인 후 복사

//이 두 객체 변수의 ID가 다르므로 완전히 다른 두 객체임을 나타냅니다.

//그러한 것을 완료하세요 아래 작업: 새 멤버 객체를 생성할 때 멤버의 포인트를 0으로 지우려면 어떻게 해야 할까요?

//복제된 새 객체를 전처리하려면 Member 클래스에 __clone() 복제 매직 메소드를 생성하세요

// 다시 한번 시연해 보세요

//현재 포인트를 확인하세요

echo $member->score;
로그인 후 복사
로그인 후 복사
로그인 후 복사

//복제하여 새로운 개체 $member3

$member3 = clone $member;
로그인 후 복사

//새 개체 $member3의 점수 값을 확인하여 수업에 __clone()이 있는지 확인하세요. 효과가 있나요?

echo &#39;<hr>&#39;;
echo $member3->score; //0,说明克隆魔术方法已经生效
로그인 후 복사

위 내용은 PHP에서 객체 복사 및 복제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 객체 작업과 배열 작업 중 어느 것이 더 빠릅니까? PHP 객체 작업과 배열 작업 중 어느 것이 더 빠릅니까? Jul 12, 2023 pm 03:04 PM

PHP 배열 작업은 PHP 개체 작업보다 빠릅니다. 1. 개체 작업에는 개체 생성, 메서드 호출 및 속성 액세스와 같은 단계가 포함되므로 성능이 느려질 수 있습니다. 여러 값을 보유하고, 배열에서 다양한 방법과 기능을 사용하고, 배열에서 빠르고 효율적인 작업을 수행할 수 있습니다.

루프에서 PHP 배열을 객체로 변환하는 방법 루프에서 PHP 배열을 객체로 변환하는 방법 Aug 10, 2023 pm 02:44 PM

루프에서 PHP 배열을 객체로 변환하는 방법에는 두 가지가 있습니다. 1. 강제 유형 변환을 사용하여 배열을 객체로 변환하고 배열의 키는 유효한 객체 속성 이름이어야 합니다. 배열 키가 객체의 속성 이름으로 유효한지 여부에 관계없이 Copied 배열의 요소를 객체에 추가합니다.

PHP 객체와 배열의 차이점은 무엇입니까 PHP 객체와 배열의 차이점은 무엇입니까 Aug 24, 2023 pm 05:02 PM

PHP 객체와 배열의 차이점은 다음과 같습니다. 1. 객체는 복합 데이터 유형인 반면 배열은 단순 데이터 유형입니다. 2. 객체의 속성과 메소드는 객체의 인스턴스를 통해 액세스할 수 있지만 요소는 객체의 인스턴스를 통해 액세스할 수 있습니다. 3. 객체는 속성과 메서드를 캡슐화하는 엔터티인 반면 배열은 순서가 지정된 요소 모음입니다. 4. 객체는 PHP에서 참조로 전달되는 반면 배열은 값으로 전달됩니다. PHP 5. 객체는 상태와 동작을 포함하는 엔터티를 설명하는 데 적합한 반면, 배열은 대량의 유사한 데이터를 저장하고 처리하는 데 적합합니다.

PHP에서 객체 변수를 사용하는 방법 PHP에서 객체 변수를 사용하는 방법 Sep 13, 2023 pm 12:59 PM

PHP에서 객체 변수를 사용하려면 특정 코드 예제가 필요합니다. PHP에서 객체 변수를 사용하면 객체를 더 쉽게 관리하고 조작할 수 있습니다. 객체 변수는 객체 인스턴스를 저장하는 데이터 유형입니다. 객체는 클래스의 메서드를 호출하고 클래스의 속성에 액세스하여 조작할 수 있습니다. 다음은 PHP에서 객체 변수를 사용하는 방법을 자세히 소개하고 해당 코드 예제를 제공합니다. 객체 생성 PHP에서는 new 키워드를 사용하여 객체를 생성할 수 있습니다. 예는 다음과 같습니다: classCar{public$colo

PHP 배열은 객체입니까? PHP 배열은 객체입니까? Jul 22, 2022 pm 05:24 PM

PHP 배열은 객체가 아닙니다. PHP에서 배열과 객체는 서로 다른 두 가지 데이터 유형입니다. 배열은 정렬된 데이터의 모음이고 객체는 속성뿐만 아니라 메서드도 포함하는 클래스의 인스턴스화 결과입니다. 객체는 데이터에 대한 작업을 캡슐화할 수 있지만 배열은 캡슐화할 수 없습니다.

PHP에서 객체 메소드를 호출하는 방법 살펴보기 PHP에서 객체 메소드를 호출하는 방법 살펴보기 Mar 28, 2023 pm 03:00 PM

PHP는 다양한 애플리케이션, 특히 웹 애플리케이션을 개발하는 데 사용할 수 있는 매우 인기 있는 프로그래밍 언어입니다. PHP에서 객체지향 프로그래밍은 중요한 기능 중 하나입니다. 이 기사에서는 PHP에서 객체 메서드를 호출하는 방법을 살펴보겠습니다.

PHP에서 객체의 모든 메소드를 얻는 방법 PHP에서 객체의 모든 메소드를 얻는 방법 Mar 23, 2023 am 11:12 AM

PHP에서는 PHP 표준 라이브러리의 ReflectionClass 클래스를 사용하여 객체의 모든 메소드를 얻는 것이 매우 간단합니다. ReflectionClass 클래스는 클래스 이름, 속성, 메소드 등을 포함하여 PHP에서 클래스의 모든 정보를 반영하는 메소드를 제공합니다. 아래에서는 ReflectionClass 클래스를 사용하여 객체의 모든 메서드를 얻는 방법을 자세히 소개합니다.

PHP 객체 및 클래스의 함수 인스턴스 PHP 객체 및 클래스의 함수 인스턴스 Jun 16, 2023 am 09:51 AM

PHP는 객체와 클래스의 개념을 지원하는 객체지향 프로그래밍 언어입니다. PHP에서 객체는 메소드라고 불리는 데이터와 함수를 저장할 수 있는 클래스의 인스턴스입니다. PHP 객체와 클래스의 기능을 사용하면 코드를 쉽게 구성하고 코드 재사용성을 높일 수 있습니다. 이 기사에서는 PHP 객체와 클래스의 함수 예제와 그 기능을 소개합니다. 생성자(__construct) 생성자는 객체가 생성될 때 자동으로 호출되는 함수입니다. 객체의 속성을 초기화하고 수행하는 데 사용됩니다.

See all articles