教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 php面相对象的魔术方法使用总结

php面相对象的魔术方法使用总结

发布时间:2016-10-19   编辑:jiaochengji.com
教程集为您提供php面相对象的魔术方法使用总结等资源,欢迎您收藏本站,我们将为您提供最新的php面相对象的魔术方法使用总结资源
下面本文章给各位简单的总结一下php面相对象的魔术方法相关方法命令了,希望这几个例子能帮助到大家理解魔术方法吧。


1.__construct()
实例化对象是被自动调用。当__construct和以类名为函数名的函数 同时存在时调用__construct,另一个不背调用。
类名为函数名的函数为老版的构造函数。
2.__destruct()
当删除一个对象或一个对象操作结束是被调用。
3.__call()
对象调用某个方法。若方法不存在,这调用__call 这个方法
4.__get()
读取一个对象属性,如果对象属性是私有的会调用它
5.__set()
给一个对象属性赋值时如果属性是私有的会调用它
6.__toString()
打印一个对象的时候会被调用。
7.__clone()
克隆对象时被调用,如:$a=new test(); $a1=clone $a;
8.__sleep()
Serialize 之前被调用,若对象比较大,想删减一点东西在序列化可以用它。
9.__wakeup()
Unserialize时被调用,做些对象的初始化工作。
10.__isset()
检测一个对象的属性是否存在如果 检测的属性是私有的时候会被调用。
11.__unset()
删除一个对象属性时如果 删除的对象属性是私有的会被调用
12.__set_state()
调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。
13.__autoload()
实例化一个对象时,如果对应的类不存在,则该方法被掉用。


php书籍=php web开发大全

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy9286')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy9286>


<?php
class BookStore{
 private $p = array();

 function __set($name,$value){
  print "set:::::{$name}:{$value}<br />";
  $this->p[$name] = $value;
 }
 function __get($name){
  print "get:::::{$name}<br />";
  //array_key_exists检查给定的键名或索引是否存在于数组中
  return array_key_exists($name,$this->p) ? $this->p[$name] : null;
 }
}
$computer = new BookStore();
$computer->php = 'php web开发大全';
echo "php书籍=".$computer->php;
?>


(2)__autoload(),你是不是还在因为调用的类或函数过多而烦恼,是不是还在因为写了n遍的require()和include()
而烦恼,知道__autoload()方法,你就不需这么做了,下面我来做一个抛砖引玉的作用:
MyClass.php文件:

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy1356')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy1356>


<?php
 class MyClass{
  function printWeb(){
   echo "你现在访问的网站是www.jiaochengji.com";
  }
 }
?>

general.inc.php文件


<?php
function __autoload($class_name){
 $file(dirname(__FILE__))."/libs/classes/$class_name.php";
 if (!file_exists($file)){
  return false;
 }else{
  require_once($file);
 }
}
?>

main.php


<?php
require("general.inc.php");
$obj = new Myclass();
if (is_object($obj)){
 $obj->printWeb();
}else{
 echo "类文件没调入";
}
?>


运行结果:
你现在访问的网站是www.jiaochengji.com

当然还有很多魔术方法,比如__isset(),__unset(),__toString(),__clone()这里就不一一介绍了

您可能感兴趣的文章:
PHP的魔术方法与魔术常量
php面相对象的魔术方法使用总结
php 魔术方法有哪些,作用是什么?
PHP中魔术方法的使用举例
php中的魔术方法一些学习笔记
PHP之十六个魔术方法详解(总结)
php中什么是魔术引号
PHP中的魔术方法总结
php面相对象的魔术方法中文说明与例子
腾讯php程序员面试题-15个魔术方法的总结

[关闭]
~ ~