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开发大全

 代码如下 复制代码

<?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文件:

 代码如下 复制代码

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

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.111cn.net

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

时间: 2024-10-25 20:51:37

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

php面相对象的魔术方法中文说明与例子

集合涵义 在PHP中以两个下划线开头的方法,__construct(), __destruct (), __call(), __callStatic(),__get(), __set(), __isset(), __unset (), __sleep(), __wakeup(), __toString(), __set_state,() __clone() __autoload()等,被称为"魔术方法"(Magic methods).如果希望PHP调用这些魔术方法,首先必须的类中定义,

PHP的魔术方法

1.__get/__set:对对象属性的接管 2.__call/__callStatic:控制php对象方法的使用 3.__toString:将php对象转换成字符串 4.__invoke:将一个php对象当成函数来执行时来回调这个方法 class Object { protected $array = array(); function __set($key,$value) { var_dump(__METHOD__); $this->array[$key] = $value; } funct

PHP 5.3的新增魔术方法

  PHP5.3新增了一个叫做__invoke的魔术方法,这样在创建实例后,可以直接调用对象. class testClass { public function __invoke { print "hello world"; } } $n = new testClass; $n(); 执行结果为: hello world. 官方示例 class CallableClass { public function __invoke($x) { var_dump($x); } } $obj

PHP中的常见魔术方法功能作用及用法实例

  这篇文章主要介绍了PHP中的常见魔术方法功能作用及用法实例,本文讲解了构造函数和析构函数__construct()和__desctruct()以及属性重载(Property Overloading)__get()和.__set().__isset()等等魔术方法,需要的朋友可以参考下 概述 在面向对象编程中,PHP提供了一系列的魔术方法,这些魔术方法为编程提供了很多便利.PHP中的魔术方法通常以__(两个下划线)开始,并且不需要显示的调用而是由某种特定的条件出发.这篇文章简单总结了PHP中提

PHP魔术方法的使用示例

  这篇文章主要介绍了PHP魔术方法的使用示例,本文分别讲解了__get.__set.__call.__callStatic.__toString. __invoke等魔术方法的使用,需要的朋友可以参考下 ① __get/__set:将对象的属性进行接管 当访问一个不存在的对象属性时: index.php 代码如下: define('BASEDIR',__DIR__); //定义根目录常量 include BASEDIR.'/Common/Loader.php'; spl_autoload_re

PHP中的魔术方法总结和使用实例

  这篇文章主要介绍了PHP中的魔术方法总结和使用实例,魔术方法是PHP面向对象中特有的特性,它们在特定的情况下被触发,都是以双下划线开头,你可以把它们理解为钩子,需要的朋友可以参考下 魔术方法是PHP面向对象中特有的特性.它们在特定的情况下被触发,都是以双下划线开头,你可以把它们理解为钩子,利用模式方法可以轻松实现PHP面向对象中重载(Overloading即动态创建类属性和方法).魔术方法很多还是成对出现的,以下列出目前PHP中所有的模式方法. 1.__construct,__destruc

PHP中魔术方法的用法

  PHP中魔术方法的用法 /** PHP把所有以__(两个下划线)开头的类方法当成魔术方法.所以你定义自己的类方法时,不要以 __为前缀. * */ // __toString.__set.__get__isset().__unset() /* The __toString method allows a class to decide how it will react when it is converted to a string. __set() is run when writing

那些年我们错过的魔术方法

 PHP 对象的一个优势是可以使用魔术方法,这些方法可以不需要修改外部代码而重写一个类的默认行为,这使得PHP 语法有更少的冗余性和更具有扩展性.这些方法很好识别,他们都是以双下划线(__)开始的 PHP 对象的一个优势是可以使用魔术方法,这些方法可以不需要修改外部代码而重写一个类的默认行为,这使得PHP 语法有更少的冗余性和更具有扩展性.这些方法很好识别,他们都是以双下划线(__)开始的. 比如: __construct(),__destruct(),__call(),__callStatic

php教程之魔术方法的使用示例

 这篇文章主要介绍了php的魔术方法的使用示例(php魔术函数),需要的朋友可以参考下  代码如下: /** PHP把所有以__(两个下划线)开头的类方法当成魔术方法.所以你定义自己的类方法时,不要以 __为前缀. * */   // __toString.__set.__get__isset().__unset() /*   The __toString method allows a class to decide how it will react when it is converted