php魔术方法功能与用法实例分析


Posted in PHP onOctober 19, 2016

本文实例讲述了php魔术方法功能与用法。分享给大家供大家参考,具体如下:

<?php
//php中的魔术方法
header('content-type:text/html;charset=utf-8');
class Person{
 public $name;
 protected $sex;
 private $salary;
 //构造方法,实例化对象是自动触发的方法
 public function __construct($name,$sex,$salary){
  $this->name=$name;
  $this->sex=$sex;
  $this->salary=$salary;
 }
 //魔术常量__CLASS__
 public function getClassName(){
  echo __CLASS__;
 }
 // __FUNCTION__
 public function getMethod(){
  echo __FUNCTION__;
 }
 //__tostring()
  public function __tostring(){
   return '对象必须用var_dump()'.'姓名是'.$this->name;
  }
 //__clone() 在使用clone方法的时候会自动调用
  public function __clone(){
   echo '这个对象是被克隆出来的';
   $this->name='李四';
  }
  //__get() 当调用一个不存在或权限不够的属性自动触发的方法
  public function __get($a){
   echo $a.'属性不存在或权限不够';
  }
  //__set() 当设置一个不存在或权限不够的属性时自动触发的方法
  public function __set($name,$value){
   echo $name.'为'.$value;
  }
  //__isset() 当在类外判断一个不存在或权限不够的属性时自动触发的方法
  public function __isset($name){
   echo $name.'不能为空';
  }
  //__call() 当去访问一个权限不够或者不存在的方法的时候,会自动触发的魔术方法
  public function __call($method,$a){
   echo '您请求的方法'.$method.'不存在';
   $this->getname();
  }
  public function getname(){
  echo $this->name;
  }
}
//实例化对象
$person=new Person('张三','男',12223);
$person1=new Person('张三','男',12223);
//$person2=new Person('李四','女',11111);
var_dump($person);
var_dump($person1);
exit;
$person->getClassName();
$person->getMethod();
//echo $person->name;
//echo $person;
$person1=$person; //同一个对象
//var_dump($person);
//var_dump($person1);
$person2=clone $person; //克隆会产生不一样的对象
//var_dump($person);
//var_dump($person2);
//echo $person2->name;
//$person->salary=10000;
//var_dump(isset($person->salary));
//$person->getName();

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php imagecreatetruecolor 创建高清和透明图片代码小结
May 15 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
php对二维数组按指定键值key排序示例代码
Nov 26 PHP
php设计模式之命令模式使用示例
Mar 02 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
PHP中date与gmdate的区别及默认时区设置
May 12 PHP
对PHP新手的一些建议(PHP学习经验总结)
Aug 20 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
php防止恶意刷新与刷票的方法
Nov 21 PHP
CodeIgniter常用知识点小结
May 26 PHP
PHP连接MYSQL数据库的3种常用方法
Feb 27 PHP
laravel开发环境homestead搭建过程详解
Jul 03 PHP
php封装的smartyBC类完整实例
Oct 19 #PHP
php封装的smarty类完整实例
Oct 19 #PHP
PHP内存缓存功能memcached示例
Oct 19 #PHP
PHP实现上传图片到 zimg 服务器
Oct 19 #PHP
php通过会话控制实现身份验证实例
Oct 18 #PHP
利用php_imagick实现复古效果的方法
Oct 18 #PHP
php封装的page分页类完整实例
Oct 18 #PHP
You might like
多重?l件?合查?(一)
2006/10/09 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
python3音乐播放器简单实现代码
2020/04/20 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
Python和Go语言的区别总结
2019/02/20 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
3种python调用其他脚本的方法
2020/01/06 Python
Python插件机制实现详解
2020/05/04 Python
CSS3制作半透明边框(Facebox)类似渐变
2012/12/09 HTML / CSS
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
综合实践活动方案
2014/02/14 职场文书
党员群众路线承诺书
2014/05/20 职场文书
史上最牛辞职信
2015/05/13 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS