目录
常见魔术方法
属性相关
方法相关
综合例子
首页 后端开发 php教程 php面向对象之魔术方法

php面向对象之魔术方法

Jun 06, 2018 am 09:57 AM
php面向对象 魔术方法

这篇文章主要介绍了关于php面向对象之魔术方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

常见魔术方法

属性相关

__set($property, $value)     给不可访问的属性赋值

__get($propertyName)         调用不可访问的属性

__isset($content)    
对不可访问的属性使用empty()、isset()时触发

__unset($content)     
对不可访问的属性使用unset()时触发
登录后复制

方法相关

__call(string $function_name, array $arguments)    
调用不可访问的普通方法
$function_name  被调用的方法名
$arguments      被调用方法的多个参数


__callStatic(string $function_name, array $arguments)
调用不可访问的静态方法
登录后复制

综合例子

<?php

class Example
{
    // 可访问的属性
    public $price = 111;

    //不可访问的属性
    private $secret = &#39;我是不可访问的属性&#39;;
    private $age = 23;

    //不可访问的普通方法
    private function donTell()
    {
        echo &#39;不能说的秘密&#39;;
    }

    //不可访问的静态方法
    private static function super()
    {
        echo &#39;我是不可访问的静态方法&#39;;
    }

    //魔术方法
    public function __set($property, $value)
    {
        echo &#39;给不可访问的属性赋值,您要设置的属性是&#39;.$property.&#39;,值是&#39;.$value;
        $this -> $property = $value;
    }

    public function __get($propertyName)
    {
        echo &#39;调用私有属性&#39;.$propertyName.&#39;,它的属性值是&#39;.$this -> $propertyName;
    }

    public function __isset($content)
    {
        echo &#39;你在对不可访问的属性进行empty()、isset()操作&#39;;
        isset($this->$content);
    }

    public function __unset($content)
    {
        echo &#39;你在对不可访问的属性进行unset()操作&#39;;
        isset($this->$content);
    }


    public function __call($function_name,$args)
    {
        echo &#39;你在调用不可访问的普通方法&#39;;
        echo &#39;方法名是&#39;.$function_name;
        var_dump($args);
    }

    public static function __callStatic($function_name,$args)
    {
        echo &#39;调用不可访问的静态方法&#39;;
        echo &#39;方法名是&#39;.$function_name;
    }

}


//实例化对象
$e1 = new Example();


/******* 触发各种魔术方法 ***********/

// 测试__set方法
$e1 -> secret = &#39;我是秘密&#39;;
echo &#39;<hr/>&#39;;

// 测试__get方法
$e1 -> age;
echo &#39;<hr/>&#39;;

// 测试__isset()方法
echo isset($e1 -> age);
echo &#39;<hr/>&#39;;

// 测试__unset方法
unset($e1 -> age);
echo &#39;<hr/>&#39;;

// 测试__call方法
$e1 -> donTell([1,2,3]);
echo &#39;<hr/>&#39;;

// 测试__callStatic方法
$e1 -> super();



?>
登录后复制

相关推荐:

php面向对象之静态方法、属性和常量

php面向对象之构造函数和析构函数

以上是php面向对象之魔术方法的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

解密Python元编程:从基础到高阶典范 解密Python元编程:从基础到高阶典范 Feb 19, 2024 pm 03:30 PM

python元编程基础Python元编程是动态地操作Python代码的能力,这使得Python成为一门非常强大的语言。元编程可以通过以下几种方式实现:类装饰器:类装饰器是一种修改类定义的装饰器。它可以用来添加或修改类的属性和方法,也可以用来控制类的实例化过程。defadd_method_to_class(cls):defnew_method(self):print("Thisisanewmethod")setattr(cls,"new_method",new_method)returncls@a

深入解读PHP面向对象的封装性 深入解读PHP面向对象的封装性 Aug 11, 2023 am 11:00 AM

深入解读PHP面向对象的封装性封装是面向对象编程的三大特征之一,它是指将数据和对数据的操作封装在一个类中,对外部程序隐藏具体的实现细节,提供对外的接口。在PHP中,通过使用访问修饰符(public、protected、private)来控制属性和方法的可访问性,实现封装的概念。首先,我们来了解一下访问修饰符的作用:public(公开的):公开的属性和方法可以

PHP 魔术方法的执行顺序如何遵循? PHP 魔术方法的执行顺序如何遵循? Apr 17, 2024 pm 09:33 PM

PHP魔术方法的执行顺序遵循以下规则:优先级高的魔术方法优先执行。如果子类和父类都定义了同名的魔术方法,则优先执行子类的魔术方法。如果一个类既定义了一个常规方法,又定义了同名的魔术方法,则优先执行常规方法。

如何通过PHP面向对象简单工厂模式实现对象的版本控制和管理 如何通过PHP面向对象简单工厂模式实现对象的版本控制和管理 Sep 06, 2023 pm 02:39 PM

如何通过PHP面向对象简单工厂模式实现对象的版本控制和管理在开发大型的、复杂的PHP项目时,版本控制和管理是非常重要的一环。通过适当的设计模式,我们可以更好地管理和控制对象的创建和使用,从而提高代码的可维护性和扩展性。本文将介绍如何使用PHP面向对象简单工厂模式来实现对象的版本控制和管理。简单工厂模式是一种创建类的设计模式,它通过一个工厂类来实例化指定的对象

什么是魔术方法?如何在 Laravel 中使用 什么是魔术方法?如何在 Laravel 中使用 Sep 26, 2022 pm 08:21 PM

什么是魔术方法?如何在 Laravel 中的应用?下面本篇文章给大家介绍一下PHP 魔术方法在 Laravel中应用的方法,希望对大家有所帮助!

PHP开发:使用 反射 和 魔术方法 实现代码自动生成和动态调用 PHP开发:使用 反射 和 魔术方法 实现代码自动生成和动态调用 Jun 15, 2023 pm 04:16 PM

PHP开发中,反射和魔术方法是两种常用的技巧。当我们需要自动生成代码或者动态调用某些函数时,反射和魔术方法可以使我们的代码更加灵活和高效。在本文中,我们将探讨如何使用反射和魔术方法来实现代码自动生成和动态调用。反射是PHP提供的一种强大的工具,它可以帮助我们在程序运行时获取类、方法和属性等信息。通过反射,我们可以动态地获取类或对象的方法、属性和注释等信息,使

PHP函数的魔术方法 PHP函数的魔术方法 May 19, 2023 am 08:06 AM

PHP是一种基于C语言开发的服务器端脚本语言,它在Web开发中广泛应用。而函数是程序中最基本、最常用的组成部分之一,PHP也提供了许多与函数相关的魔术方法,可以帮助开发者更好地利用函数的优势。在本文中,我们将介绍PHP函数的魔术方法及其用法。__construct()__construct()是PHP中最常用的魔术方法之一,它在创建对象时自动调用,用于初始化

带你吃透16个PHP魔术方法 带你吃透16个PHP魔术方法 May 16, 2022 pm 08:45 PM

什么是魔术方法?本篇文章带大家了解一下16个PHP 开发者必知必会的魔术方法,希望对大家有所帮助!

See all articles