下面我将对PHP所有的魔术方法进行介绍说明。其实下面的大多数方法,对于一个合格的PHP程序员来说,都是很熟悉的东西了。我在这里作个总结,自己作个记录学习,同时也给还未熟悉这些方法的同学们做个介绍。如有疏漏和错误,希望各位能指出。下面所提到的,大多数是PHP5所增加的魔术方法,少部分在PHP4里就已经存在,少部分则是PHP5.1.0之后才出现的,这个在下面我将会提到。
__construct()和__destruct()
构造函数__construct()和析构函数__destruct(),这两个不用我多说了吧,是个程序员都知道。__construct()会在实例创建的时候被调用,__destruct()在实例销毁的时候被调用。需要注意的时候,即使你不显式地调用unset去销毁一个实例,它也会在脚本运行结束的时候被销毁。这两个方法都可以传递0个或者多个参数。
<?phpclass o{ public function __construct() { echo ''building instance''; } public function __destruct() { echo ''destroy instance''; }}$i = new o;unset($i);//这句有无都不影响最后的输出。__destruct()总是会被调用的//输出//building instance//destroy instance?>
__get, __set, __isset, __unset
当对一个属性进行操作的时候,如果该属性不可获得(不存在,或者当前环境不可调用该属性,例如在子类中调用一个父类的private属性),则调用以上方法的其中一个。调用什么方法是依据对属性所进行的操作。注:在php 5.0.*里,这4个方法必须为public。
__get
触发事件:调用属性
参数 1 :所调用的属性名
例子:
<?phpclass o{ protected function __get($var) { return ''No Member:''.$var; }}$i=new o();echo $i->name; // 输出 No Member:name?>
<?phpclass o{ private $name=''surfchen'';//注意这里的private protected function __get($var) { return ''No Member:''.$var; }}class child extends o{ function test() { echo $this->name; }}$c=new child();echo $c->test(); // 输出 No Member:name?>
__set
触发事件:对一个属性进行赋值
参数 1 :所调用的属性名
参数 2 :所赋予的值
例子:
<?phpclass o{ protected function __set($var,$val) { echo ''setting ''.$var.'' to ''.$val." "; }}$c=new o();echo $c->name=''wolfzeus''; /*输出:setting name to wolfzeuswolfzeus*/?>
__isset
触发事件:用isset检测属性是否存在
参数 1 :所调用的属性名
例子:
<?phpclass o{ protected function __isset($var) { echo $var.'' have not been set''; }}$c=new o();isset($c->name); /*输出:name have not been set*/?>
__unset
触发事件:unset一个属性(无论这个属性是否存在)
参数 1 :所调用的属性名
例子:
<?phpclass o{ protected function __unset($var) { echo $var.'' is unset''; }}$c=new o();unset($c->name); /*输出:name is unset*/?>
__call($func,$para)
当尝试调用一个对象的方法的时候,如果该方法不存在,则调用__call($func,$para)方法。这个方法必须有两个参数,第一个为调用的方法名,第二个是一个被调用方法的参数数组。

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
