목차
unset() 클래스 " >PHP 페이지가 로드된 후 unset() 클래스
백엔드 개발 PHP 튜토리얼 생성자 및 소멸자 메서드의 PHP 객체 지향 코드 사례 공유

생성자 및 소멸자 메서드의 PHP 객체 지향 코드 사례 공유

Mar 25, 2017 am 10:12 AM

 생성자 메서드소멸자 메서드객체의 두 가지 특수 메서드이며 둘 다 개체의 라이프 사이클과 관련이 있습니다. . 생성자 메서드는 객체가 생성된 후 객체가 자동으로 호출하는 첫 번째 메서드입니다. 이것이 객체에서 생성자 메서드를 사용하는 이유입니다. 소멸자 메소드는 객체가 소멸되기 전에 자동으로 호출되는 마지막 메소드 입니다. 이것이 객체에서 소멸자 메소드를 사용하는 이유입니다. 따라서 일부 객체의 초기화 작업을 완료하기 위해 생성자 메소드를 사용하는 경우가 많고, 청소 작업을 완료하기 위해 소멸자 메소드를 사용하는 경우가 많습니다. 파괴되기 전의 일부 개체. 1. 생성자

선언된 각 클래스에는 생성자라는 특수한 멤버 메서드가 없으면 선언합니다. 명시적으로, 기본적으로 클래스에는 매개변수 목록이 없고 빈 내용이 없는 생성자가 있습니다. 명시적으로 선언하면 클래스의 기본 생성자가 존재하지 않습니다. 객체가 생성되면 생성자 메서드는 자동으로 한 번 호출됩니다. 즉, 객체를 인스턴스화하기 위해 new 키워드가 사용될 때마다 생성자 메서드가 자동으로 호출됩니다. 객체에 대한 참조를 통해 생성자 메서드를 적극적으로 호출할 수 없습니다. . 따라서 생성자는 일반적으로 객체를 생성할 때 멤버 속성에 초기값을 할당하는 등 몇 가지 유용한 초기화 작업을 수행하는 데 사용됩니다. 이전 버전의 PHP5에서는 생성자의 메소드 이름이 클래스 이름과 동일해야 합니다. 이 메소드는 PHP 5에서도 계속 사용할 수 있습니다. 그러나 PHP에서는 클래스 이름과 동일한 이름으로 생성자를 선언하는 경우가 거의 없습니다. 이 경우 클래스 이름이 변경될 때 생성자가 클래스 이름과 독립적일 수 있다는 장점이 있습니다. 생성자 이름. 이전 버전과의 호환성을 위해 객체 생성 시 클래스에 constructor()라는 생성자가 없으면 PHP는 클래스 이름과 동일한 이름을 가진 생성자를 검색

하여 실행합니다. 클래스에서 생성자를 선언하는 형식은 다음과 같습니다.

function construct( [参数列表] ){ //构造方法名称是以两个下划线开始的
    //方法体,通常用来对成员属性进行初始化赋值}
로그인 후 복사

PHP에서는 동일한 클래스에서 하나의 생성자만 선언할 수 있습니다. 그 이유는 생성자 메소드 이름이 고정되어 있고, PHP에서는 같은 이름을 가진 두 함수를 선언할 수 없기 때문에 생성자 메소드 오버로딩이 없기 때문입니다. 그러나 다른

객체 지향

프로그래밍 언어 ​​에서 생성자 오버로드 기능을 구현하기 위해 생성자를 선언할 때 기본 매개 변수를 사용할 수 있습니다. 이런 방식으로 객체를 생성할 때 생성자에 매개 변수가 전달되지 않으면 기본 매개 변수를 사용하여 멤버 속성을 초기화합니다. <… 🎜 >생성자는 다른 클래스의 생성자를 호출할 수 있습니다. 관련 없는 클래스의 생성자:

<?phpclass Person{
    private $name;    
    private $age;    
    private $gender;    
    public function construct($name,$age,$gender){
        $this->setName($name);   //调用类方法
        $this->age = $age;        
        $this->setGender($gender);
    }    public function setName($name){
        $this->name = $name;
    }    // ... setter 方法}$person = new Person("yeoman",23,&#39;男&#39;);?>
로그인 후 복사
  • 상속

    및 생성자
  • PHP의 하위 클래스 생성자는 상위 클래스의 생성자를 적극적으로 호출하지 않습니다. 표시하려면 parent::construct() 호출을 사용하세요.

    function construct(){
        parent::construct(); // 调用父类的构造函数必须显示的使用parent调用父类构造函数
        classname::construct(); // 调用其他类的构造函数,classname是类名
        //其他操作}
    로그인 후 복사

    다단계 상속이 관련된 경우 parent::construct()가 호출되면 가장 적합한 생성자를 찾을 때까지 상위 클래스를 따라 위쪽으로 검색합니다. 예:
  • <?php
    class Animal{
        private $name;    
        function construct($name){
            $this->setName($name)        
            echo "动物类被创建!";
        }    // ... 其他方法}class Birds extends Animal{
        private $name;    
        private $leg;    
        function construct($name,$leg){
            parent::construct($name); // 显示调用
            $this->setLeg($leg);       
             echo "鸟类被创建!";
        }    // ... 其他方法}?>
    로그인 후 복사
  • 여러 상위 클래스의 생성자를 순서대로 호출하려면 다음을 수행합니다. 클래스 이름을 사용하여 생성자를 직접 호출할 수 있습니다. 예:

    // 接上例class Parrot extends Birds{
        private $name;    
        private $leg;    
        private $wing;    
        function construct($name){
            parent::construct($name); 
            // 此时没有找到父类(Birds类)合适的构造函数,只能向上搜索,搜索到Animal类时,才找到合适的构造函数
            echo "鹦鹉类被创建!";        
            $this->smackTalk();        
            /*
            输出结果:
            "动物类被创建!"
            "鹦鹉说话!"
            */
        }    function smackTalk(){
            echo "鹦鹉说话!";    
        }
    
    }
    로그인 후 복사


    2.
  • 소멸자

소멸자 메서드를 사용하면 객체를 삭제하기 전에 파일 닫기, 결과 집합 해제 등과 같은 몇 가지 특정 작업을 수행할 수 있습니다. 힙 메모리 세그먼트의 개체가 액세스할 참조를 잃으면 액세스할 수 없으며 가비지 개체가 됩니다. 일반적으로 개체에 대한 참조에는 다른 값이 할당되거나 페이지가 끝나면 개체의 참조가 손실됩니다. 소멸자는 객체를 소멸할 때 자동으로 호출되며 명시적으로 호출할 수 없습니다. 소멸자는 매개변수를 취할 수 없습니다.
소멸자 메서드의 선언 형식은 다음과 같습니다.

function construct($name,$leg){
       Animal::construct($name); // 调用Animal构造函数
        Birds::construct($name,$leg); // 调用Birds构造函数}
로그인 후 복사

소멸자는 다음 상황에서 호출될 수 있지만 반드시 그런 것은 아닙니다.

PHP 페이지가 로드된 후 unset() 클래스


변수
는 다른 개체를 참조합니다.

PHP의 메모리 재활용 메커니즘은 JAVA와 매우 유사합니다. 참조 카운터 기술을 사용하여 객체를 삭제하고 재활용합니다.

  • 예:

    <?php
    class test{
        function destruct(){
            echo "当对象销毁时会调用!!!";
        }
    
    }$a = $b = $c = new test();$a = null;unset($b);echo "<hr />";?>
    로그인 후 복사

      此例子,如下图,有三个变量引用$a,$b,$c指向test对象,test对象就有3个引用计数,当$a = null时,$a对test对象的引用丢失,计数-1,变为2,当$b被unset()时,$b对test对象的引用也丢失了,计数再-1,变为1,最后页面加载完毕,$c指向test对象的引用自动被释放,此时计数再-1,变为0,test对象已没有变量引用,就会被销毁,此时就会调用析构函数。
    생성자 및 소멸자 메서드의 PHP 객체 지향 코드 사례 공유

    在PHP中析构方法并不是很常用,它属于类中可选的一部分,只有需要时才在类中声明。

    <?phpclass Person{
        var $name;    
        var $sex;    
        var $age;    
        function construct($name, $sex, $age){
            $this->name = $name;        
            $this->sex = $sex;       
             $this->age = $age;  
        }    
        function destruct(){
            echo "再见" . $this->name . "<br />";    
        }
    }
    $person1 = new Person("张三三", "男", 23);
    $person1 = null;   //第一个对象将失去引用
    $person2 = new Person("李四四", "女", 17);
    $person3 = new Person("王五五", "男", 43);
    ?>
    로그인 후 복사

    运行结果:

    再见张三三
    再见王五五
    再见李四四
    로그인 후 복사

      第一个对象在声明完成以后,它的引用就被赋予了空值,所以第一个对象最先失去的引用,不能再被访问了,人后自动调用第一个对象中的析构方法输出“再见张三三”。后面声明的两个对象都是在页面执行结束时失去的引用,也都自动调用了析构方法。但因为对象的引用都是放在栈内存中的,由于栈的后进先出特点,最后创建的对象会被最先释放,多以先自动调用第三个对象的析构方法,最后才调用第二个对象的析构方法。

    위 내용은 생성자 및 소멸자 메서드의 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에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

cakephp4에서 날짜와 시간을 다루기 위해 사용 가능한 FrozenTime 클래스를 활용하겠습니다.

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

파일 업로드 작업을 위해 양식 도우미를 사용할 것입니다. 다음은 파일 업로드의 예입니다.

CakePHP 유효성 검사기 만들기 CakePHP 유효성 검사기 만들기 Sep 10, 2024 pm 05:26 PM

컨트롤러에 다음 두 줄을 추가하면 유효성 검사기를 만들 수 있습니다.

CakePHP 로깅 CakePHP 로깅 Sep 10, 2024 pm 05:26 PM

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP 빠른 가이드 CakePHP 빠른 가이드 Sep 10, 2024 pm 05:27 PM

CakePHP는 오픈 소스 MVC 프레임워크입니다. 이를 통해 애플리케이션 개발, 배포 및 유지 관리가 훨씬 쉬워집니다. CakePHP에는 가장 일반적인 작업의 과부하를 줄이기 위한 여러 라이브러리가 있습니다.

See all articles