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面向对象全攻略 (五) 封装性
Sep 30 PHP
php 过滤器实现代码
Aug 09 PHP
浅析ThinkPHP的模板输出功能
Jul 01 PHP
PHP使用PDO连接ACCESS数据库
Mar 05 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
ThinkPHP中session函数详解
Sep 14 PHP
PHP PDO操作MySQL基础教程
Jun 05 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
Sep 01 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
Dec 13 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
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
六款帮助你实现惊艳视差滚动效果的jQuery插件
2012/09/14 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
vue项目实战总结篇
2018/02/11 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
angular多语言配置详解
2019/05/16 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
Python 序列的方法总结
2016/10/18 Python
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
用Python设计一个经典小游戏
2017/05/15 Python
pandas的排序和排名的具体使用
2019/07/31 Python
python中的global关键字的使用方法
2019/08/20 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
中专药剂专业应届毕的自我评价
2013/12/27 职场文书
争论的故事教学反思
2014/02/06 职场文书
房屋授权委托书范本
2014/10/07 职场文书
入党现实表现材料
2014/12/23 职场文书
工程资料员岗位职责
2015/04/13 职场文书
运动会通讯稿100字
2015/07/20 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers