이 글은 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('username')){ $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() 메소드가 먼저 실행되어 로그인 여부를 감지합니다.
관련 추천:
phpphpmethod_exists()와 is_callable() 함수의 차이점 분석🎜🎜위 내용은 PHP의 _initialize() 함수와 __construct() 함수의 차이점 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!