>백엔드 개발 >PHP 튜토리얼 >PHP의 _initialize() 함수와 __construct() 함수의 차이점 설명

PHP의 _initialize() 함수와 __construct() 함수의 차이점 설명

不言
不言원래의
2018-08-18 11:35:1815774검색

이 글은 PHP의 _initialize() 함수와 __construct() 함수의 차이점에 대한 설명을 제공합니다. 이는 특정 참조 값을 가지고 있으므로 도움이 필요할 수 있습니다.

_initialize() 메소드는 물론 모든 메소드가 실행되기 전에 실행되어야 합니다. __construct 생성자. 즉, _initialize() 함수가 있는 경우 객체의 임의의 메서드를 호출하면 _initialize() 함수가 자동으로 호출되며 __construct() 생성자는 객체가 생성될 때 한 번만 호출되며, 다른 메소드 호출과는 아무 관련이 없습니다.

__construct는 이중 대시이고 _initialize() 함수는 단일 대시입니다.

부모 클래스와 자식 클래스 모두에 _initialize() 함수가 있으면 자식 클래스가 부모 클래스의 함수를 재정의합니다. 상위 클래스가 그렇습니다. 하위 클래스는 상위 클래스에서 상속됩니다.

기본적으로 하위 클래스의 생성자는 상위 클래스의 생성자를 자동으로 호출하지 않습니다. 하위 클래스 객체의 _initialize()를 호출하면 상위 클래스의 _initialize()가 자동으로 호출되지 않습니다. 실제로 하위 클래스의 생성자를 작성할 때 일반적으로 상위 클래스 생성자의 활성 호출 상위를 추가해야 합니다. : :__construct(), 그렇지 않으면 비객체에 대한 멤버 함수 할당() 호출과 같은 하위 클래스 객체의 널 포인터 예외가 발생합니다.

따라서 일부 시스템 백그라운드 관리 또는 댓글 기능에서 관련 컨트롤러를 기본 컨트롤러로 확장할 수 있습니다.

Base.php:

<?php
namespace app\admin\controller;
use think\Controller;
class Base extends Controller
{
    public function _initialize(){
        if(!session(&#39;username&#39;)){
            $this->error('请先登录系统!','Login/index');
        }
    }
}

Article.php

<?php
namespace app\Admin\controller;
use app\Admin\model\Article as ArticleModel;
use app\admin\controller\Base;
class Article extends Base
{
   ……… ………
}

이런 방식으로, 기사 컨트롤러 중 하나가 메소드가 실행되면 객체를 생성하지 않고 Base.php의 _initialize() 메소드가 먼저 실행되어 로그인 여부를 감지합니다.

관련 추천:

php


php

method_exists()와 is_callable() 함수의 차이점 분석

🎜🎜

위 내용은 PHP의 _initialize() 함수와 __construct() 함수의 차이점 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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