重蔚自留地php学习第三十六天——PHP的魔术方法

魔术方法一览

重蔚自留地php学习第三十六天——PHP的魔术方法

说明

  • 魔术方法都是系统提供,程序员使用即可.
  • 所有的魔术方法,前面都是以 __ 开头的 _是两个下划线.
  • 我们在自定义函数时,就不要使用 __开头了.
  • 魔术方法是在满足某个条件(一会一个一个的说明)时,有系统自动的调用.

访问控制修饰符的基本入门介绍

  • 介绍

因为魔术方法和访问修饰符关系密切,因此我们需要先学习一下访问控制修饰符的基本知识, 这里我们先讲一个基本的介绍.

  • 文档的介绍:

对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问

  • 访问控制修饰符可以修饰成员属性,也可以修饰方法.
  • 有三种 public , protected 和 private
  • 使用代码来说明

重蔚自留地php学习第三十六天——PHP的魔术方法

魔术方法之-__get__set函数

  • 基本的介绍
  1. 当程序员去使用不可以访问的属性时,系统就会调用__get方法.
  2. 不可以访问的属性指的是(1 . 该属性不存在 直接访问了protected或者private属性)
  3. 当程序员去给不可以访问的属性直接赋值,系统就会调用__set方法
  • 举例说明

需求是: 如果对象有一个成员变量是private、protectd的,我希望在在类的外部通过 : $对象名->变量名的方式来赋值和取值,怎么办?

重蔚自留地php学习第三十六天——PHP的魔术方法 重蔚自留地php学习第三十六天——PHP的魔术方法 重蔚自留地php学习第三十六天——PHP的魔术方法

  • 课堂练习

重蔚自留地php学习第三十六天——PHP的魔术方法

魔术方法之-__isset__unset函数

  • 基本介绍
  1. 当对不可访问的属性进行了 isset($对象名->属性), empty($对象名->属性)操作,那么__isset函数就会被系统调用。
  2. 不可访问的属性 仍然和前面说的一样 。
  3. 当对不可访问的属性进行了 unset($对象名->属性), 那么__unset函数就会被系统调用
  • 代码说明

重蔚自留地php学习第三十六天——PHP的魔术方法 重蔚自留地php学习第三十六天——PHP的魔术方法 重蔚自留地php学习第三十六天——PHP的魔术方法

  • 补充说明一下语法现象-属性重载

重蔚自留地php学习第三十六天——PHP的魔术方法 重蔚自留地php学习第三十六天——PHP的魔术方法

  • 补充说明一下-property_exists()函数

 

header('content-type:text/html;charset=utf-8');
	//property_exists说明

	class A{
		public $name;
		protected $food;

		public function __construct($name, $food){
			$this->name = $name;
			$this->food = $food;
		}
	}

	$a = new A('小猫', '鱼儿');
	
	unset($a->name);

	echo'
';
	var_dump($a);

	if(property_exists($a, 'name')){
		echo '
 name属性存在';
	}

	//属性的重载
	$a->age = 100;

	echo '
';
	var_dump($a);

	if(property_exists($a, 'age')){
		echo '
 age属性存在';
	}else{
		echo '
 age属性不存在';
	}

	unset($a->age);
	echo '
';
	echo '
---------
';
	var_dump($a);

	if(property_exists($a, 'age')){
		echo '
 age属性存在';
	}else{
		echo '
 age属性不存在';
	}

	//property_exists(对象名, 属性)
	//1. 先判断该对象是否有这个属性,如果有则返回真.
	//2. 如果该对象没有有这个属性, 则继续判断该对象对应的类是否定义过这个属性,如果定义过仍然返回真,否则才返回假

 

  • 魔术方法之-__toString 函数
  • 基本介绍:

当我们希望将一个对象当做字符串来输出时,就会触发__toString魔术方法.

  • 代码说明

重蔚自留地php学习第三十六天——PHP的魔术方法 重蔚自留地php学习第三十六天——PHP的魔术方法

  • 小练习

重蔚自留地php学习第三十六天——PHP的魔术方法

做两个怪物!

魔术方法之-__clone函数

  • 基本介绍 :

当我们需要将一个对象完全的赋值一份, 保证两个对象的属性和属性值一样,但是他们的数据库空间独立,则可以使用对象克隆。

  • 案例说明

重蔚自留地php学习第三十六天——PHP的魔术方法 重蔚自留地php学习第三十六天——PHP的魔术方法 重蔚自留地php学习第三十六天——PHP的魔术方法

说明

  1. 当我们 $对象1 = clone $对象2, 会触发 __clone 方法
  2. 如果我们希望在克隆时,修改某个属性,则在__clone方法中去修改即可
  3. 如果我们希望阻止克隆,只需要将 __clone 魔术方法申明为private 即可.

魔术方法之-__call函数

  • 基本介绍:
  1. 当我们调了一个不可以访问的成员方法时,__call魔术方法就会被调用.
  2. 不可以访问的成员方法的是指(1. 该成员方法不存在, 成员方法是protected或者 private)
  • 需求

我们就是希望,在类的外部直接调用不可访问的成员方法(private , protected).

  • 案例说明

重蔚自留地php学习第三十六天——PHP的魔术方法 重蔚自留地php学习第三十六天——PHP的魔术方法 重蔚自留地php学习第三十六天——PHP的魔术方法

  • 课堂小练习

重蔚自留地php学习第三十六天——PHP的魔术方法

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/9198.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2018年5月14日
下一篇 2018年5月16日

相关推荐

  • PHP实现Redis主从复制自动切换的方法。

    Redis是一款非常流行的键值对存储数据库,在现代Web应用中扮演着至关重要的角色。为了保证Redis的高可用性和稳定性,通常需要使用主从复制的技术。同时,由于主节点故障时需要自动切换到备用节点,使得复制集群具有…

    2023年5月21日
    01
  • PHP的浮点类型float, double, real

    浮点类型float, double, real有两种写法: $v1 = 1.234;   //带小数点,,就是浮点类型 $v2 = 1.234E3; //含义是:1.234乘以10的3次方,即1234,带E的形式就是浮点数 $v3 = 1234E3;//结果值是1234000,但也是一…

    2018年3月14日 PHP自学教程
    0591
  • php类的对象及成员属性

    类的定义 class  类名{    访问修饰符 成员属性1;    访问修饰符 成员属性2;    //..... } 成员属性 文档说明: 类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。属性声明是由关键字 publi…

    2018年4月9日
    0225
  • PHP中Memcache缓存的原理及使用方法。

    PHP中Memcache缓存的原理及使用方法在Web应用程序中,缓存是提高性能和响应速度的关键。Memcache是一种常见的缓存技术之一,被广泛使用于Web应用程序中。本篇文章将介绍Memcache缓存的原理和使用方法,以帮助开发人…

    2023年5月21日
    01
  • php自学教程—php运算符的错误抑制符

    错误抑制符 说明:@,目的屏蔽一些不重要错误。 作用:所有的网站不可能没有bug的时候上线。 执行运算符 说明:``,把数据用反引号括起来后,就是执行了。 递增递减运算符 说明:自己加一或自己减一,符号:++ -- …

    2017年12月6日 PHP自学教程
    0232
  • 循环结构---FOR循环

    语法: For(变量初始化;条件表达式;变量的变化){ 循环体; } 案例:1-99 注意:变量初始化可以是多个,用逗号隔开。 注意:条件判断可以是多个,每个用逗号隔开。 图解:

    2018年2月24日 PHP自学教程
    0434
  • PHP操作MySQL详细自学教程(附代码)

      开启PHP操作MySQL的函数库    查看是否开启MySQL函数库功能 创建一个php文件,在这个文件中写phpinfo();,查看当前文件是否有MySQL。 三、   PHP操作MySQL的流程   1.链接数据库 2.选择数据库并设置编码 3.…

    2018年3月30日 PHP自学教程
    01.3K
  • 一起学习PHP的rar解压读取扩展包吧!

    一起学习PHP的rar解压读取扩展包吧!PHP的rar解压读取扩展包学习作为压缩解压方面的扩展学习,两大王牌压缩格式 rar 和 zip 一直是计算机领域的压缩终结者。rar 格式的压缩包是 Windows 系统中有接近统治地位的存在…

    2023年3月29日
    00

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息