重蔚自留地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日 15:12
下一篇 2018年5月16日 11:21

相关推荐

  • PHP与Oracle查询优化。

    随着互联网应用的日益普及,PHP作为一种常见的Web开发语言,被广泛采用,而Oracle数据库则是大型企业级应用的首选数据库之一。然而,在高并发、海量数据的场景下,PHP与Oracle查询优化显得尤为重要。 一、Oracle查…

    2023年5月21日
    00
  • PHP入门指南:命名管道。

    PHP是目前应用最为广泛的Web开发语言之一,在PHP开发过程中,常见的问题就是如何在不同文件之间传递数据,命名管道便是一种解决方案。本文将介绍PHP中的命名管道以及如何使用它们来实现进程间通信。 一、什么是命名…

    2023年5月23日
    02
  • PHP入门指南:EventLoop编程模型。

    PHP作为一门动态的脚本语言,被广泛应用于Web开发领域。在PHP中,我们通常采用阻塞IO模型来处理客户端请求,即每个请求都需要一个线程来处理,这样会消耗大量的服务器资源。为了解决这个问题,我们可以使用非阻塞IO…

    2023年5月23日
    01
  • PHP8中的数组函数:array_map()的详细应用技巧。

    近年来,随着互联网行业的迅速发展,编程语言也在不断地更新换代。PHP作为一种较为流行的编程语言,也在这种趋势下不断发展。PHP8作为最新的版本,更新了其内置函数库,提供了更多实用的函数。本文将介绍PHP8中的数…

    2023年5月21日
    07
  • 循环结构---DO...WHILE循环

    语法: 变量的初始化; Do{ 达成条件运行的代码; 变量的变化; }while(条件表达式) 注意:dowhile循环不管条件是否达成,都会运行一次循环中的代码; 案例:输出1-100 图解: 案例:99乘法表

    2018年1月9日
    0405
  • 我来说说php如何获取get请求参数。

    在PHP中,可以使用$_GET超全局数组来获取GET请求参数。 在Web开发中,GET请求是一种常见的HTTP请求方法,用于从服务器获取数据,PHP作为一种广泛使用的服务器端脚本语言,可以方便地处理GET请求参数,本文将详细介…

    2024年7月12日
    00
  • PHP调用华为云短信接口实现短信发送。

    随着智能手机的流行,短信已经成为了人们生活中必不可少的一部分。不论是商业还是个人用途,短信都是一种重要的沟通方式。华为云是一家领先的云计算服务提供商,为了满足用户需求,华为云提供了短信服务。在这篇文…

    2023年5月30日
    03
  • PHP+JavaScript实现刷新继续保持倒计时的按钮

    场景:发送一个验证码到手机,当验证码发出时,会提示隔 1 分钟之后可以再次发送。通常有这几种方式防止恶意请求,一是再次发送之前需要输入验证码,二是在指定的时间间隔之内不能再次发送。 有些网站在 1 分钟的间…

    2022年6月23日 PHP自学教程
    0144

联系我们

QQ:951076433

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