iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >后期静态绑定在PHP中的使用示例
  • 897
分享到

后期静态绑定在PHP中的使用示例

2023-06-06 14:06:16 897人浏览 独家记忆
摘要

这篇“后期静态绑定在PHP中的使用示例”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“后期静态绑定在php中的使用示例”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下

这篇“后期静态绑定在PHP中的使用示例”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“后期静态绑定在php中的使用示例”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起来看看具体内容吧。

php有什么用

php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因为php是开源的,从而使得php经久不衰。

首先,我们通过一段代码来引入后期静态绑定这一概念:

class A{    public static function who()    {        echo __CLASS__, PHP_EOL;    }    public static function test()    {        self::who();    }}class B extends A{    public static function who()    {        echo __CLASS__, PHP_EOL;    }}B::test(); // A

在这段代码中,我们使用了self关键字,当使用B类调用test()静态方法时,self指向的是A类的who()方法,因此,输出的是A。别激动,这是普通的静态绑定。self关键字调用的内容取决于它定义时所在的类。也就是说不管怎么继承,用哪个子类来调用test()方法,self关键字都会调用的是A类的who()方法。

而后期静态绑定呢?其实就有点像实例化的类对象,每个实例化的对象,调用的都是自身,而不是父类的属性方法。普通的静态调用可不是这样,但是现实中我们又有这样的需求,就像实例化对象的调用方式一样来调用静态属性方法,这时,我们就可以使用static关键字来实现后期静态绑定。

class C{    public static function who()    {        echo __CLASS__, PHP_EOL;    }    public static function test()    {        static::who();    }}class D extends C{    public static function who()    {        echo __CLASS__, PHP_EOL;    }}D::test(); // D

当使用static关键字后,这里D类调用的test()方法内部调用的who()就是D类自己了。

官方文档中的定义如下:

当进行静态方法调用时,该类名即为明确指定的那个(通常在 :: 运算符左侧部分);当进行非静态方法调用时,即为该对象所属的类。

该功能从语言内部角度考虑被命名为“后期静态绑定”。“后期绑定”的意思是说,static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。

除了self和static关键字外,我们还有一个parent关键字,这个关键字的意义就很明显了,调用父类的静态内容。我们同时用三个关键字一起来进行测试

class E{    public static function who()    {        echo __CLASS__, PHP_EOL;    }    public static function test()    {        self::who();        static::who();    }}class F extends E{    public static function who()    {        echo __CLASS__, PHP_EOL;    }}class G extends F{    public static function who()    {        parent::who();        echo __CLASS__, PHP_EOL;    }}G::test();// E// F// G

最后,我们再来看两个PHP的方法,一个是get_called_class()方法,用来获取当前调用的是哪个类。在静态方法中可以根据调用方式判断当前类是哪个类来进行其他的业务逻辑操作。另一个是forward_static_call()方法,用于静态方法的调用。

class H{    public static function who()    {        echo __CLASS__ . ':' . join(',', func_get_args()), PHP_EOL;    }    public static function test()    {        echo get_called_class(), PHP_EOL;        forward_static_call('who', 'a', 'b'); // xxx:a,b        forward_static_call(['I', 'who'], 'c', 'd'); // I:c,d        forward_static_call_array(['H', 'who'], ['e', 'f']); // H:e,f    }}class I extends H{    public static function who()    {        echo __CLASS__ . ':' . join(',', func_get_args()), PHP_EOL;    }}function who(){    echo 'xxx:' . join(',', func_get_args()), PHP_EOL;}H::test(); // H// xxx:a,b// I:c,d// H:e,fI::test(); // I// xxx:a,b// I:c,d// H:e,f

注意,如果forward_static_call()不指定类名的话,将调用全局的方法。forward_static_call_array()则是将参数使用数组进行传递。

测试代码:https://GitHub.com/zhangyue0503/dev-blog/blob/master/php/202001/source/%E5%90%8E%E6%9C%9F%E9%9D%99%E6%80%81%E7%BB%91%E5%AE%9A%E5%9C%A8PHP%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8.php

感谢你的阅读,希望你对“后期静态绑定在PHP中的使用示例”这一关键问题有了一定的理解,具体使用情况还需要大家自己动手实验使用过才能领会,快去试试吧,如果想阅读更多相关知识点的文章,欢迎关注编程网PHP编程频道!

--结束END--

本文标题: 后期静态绑定在PHP中的使用示例

本文链接: https://www.lsjlt.com/news/247529.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 后期静态绑定在PHP中的使用示例
    这篇“后期静态绑定在PHP中的使用示例”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“后期静态绑定在PHP中的使用示例”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下...
    99+
    2023-06-06
  • PHP中使用后期静态绑定的示例分析
    这篇文章给大家分享的是有关PHP中使用后期静态绑定的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。后期静态绑定在PHP中的使用什么叫后期静态绑定呢?其实我们在之前的文章PHP中的static中已经说过这个...
    99+
    2023-06-15
  • PHP后期静态绑定的示例分析
    小编给大家分享一下PHP后期静态绑定的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!基础知识1. 范围解析操作符 (::...
    99+
    2024-04-02
  • php实现后期静态绑定的方法
    这篇文章主要介绍了php实现后期静态绑定的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。后期静态绑定工作原理是存储了在上一个“非转发调用”(...
    99+
    2024-04-02
  • 从Java静态绑定和动态绑定中得到优化启示的示例分析
    本篇文章给大家分享的是有关从Java静态绑定和动态绑定中得到优化启示的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一个Java程序的执行要经过编译和执行(解释)这两个...
    99+
    2023-06-17
  • C++中静态数据成员使用示例
    #include<iostream>//尝试静态数据成员 using namespace std; class easy { private: int num1; i...
    99+
    2024-04-02
  • 在 PHP 中创建和使用静态类
    在 PHP 中,静态类是在程序中只实例化一次的类。它必须有一个静态成员(variable)、静态成员函数(method),或两者兼有。在 PHP 中使用静态变量创建静态类让我们创建一个类并初始化四个变量。然...
    99+
    2024-02-27
  • java中动态绑定的使用方法
    这篇文章主要介绍了java中动态绑定的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、用法程序在编译的时候调用的其实是父类的 eat 方法,但是在运行时运行的则是子...
    99+
    2023-06-15
  • php中的静态方法怎么使用
    这篇“php中的静态方法怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php中的静态方法怎么使用”文章吧。一、什么是...
    99+
    2023-07-05
  • 如何在Unity3D中使用单例模式和静态类
    本篇文章为大家展示了如何在Unity3D中使用单例模式和静态类,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。静态类不能继承和被继承!(严格点说是只能继承System.Object)也就是说你的静态类...
    99+
    2023-06-14
  • PHP中私有静态方法的使用详解
    PHP是一种广泛应用的编程语言,其面向对象特性使得代码的结构更加清晰和可维护。在PHP中,除了常见的公有方法和属性外,还存在私有方法和私有属性,它们只能在类的内部访问,而无法在外部直接...
    99+
    2024-04-02
  • ES6中块级作用域绑定的示例分析
    这篇文章将为大家详细讲解有关ES6中块级作用域绑定的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。众所周知,js中的var声明存在变量提升机制,因此ESMAScr...
    99+
    2024-04-02
  • use关键字在PHP中的使用示例
    这篇文章主要介绍了use关键字在PHP中的使用示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.用于命名空间的引用<phpnamespace admin\...
    99+
    2023-06-14
  • 深入探讨PHP私有静态方法的定义和使用
    PHP是一种非常流行的编程语言,经常用于Web应用程序开发。在PHP中,可以使用静态方法来执行一些与类相关的任务,而私有静态方法则是PHP面向对象编程中的一种特殊类型。在本文中,我们将深入探讨PHP私有静态方法的用途、如何定义和使用,以及它...
    99+
    2023-05-14
    私有静态方法 php
  • ORACLE ADF11g: VO SQL中存在绑定in查询的示例分析
    小编给大家分享一下ORACLE ADF11g: VO SQL中存在绑定in查询的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!图解:看完了这篇文章,相信你对“ORACLE ADF1...
    99+
    2024-04-02
  • PHP中namespace的使用示例
    这篇文章主要介绍PHP中namespace的使用示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!命名空间namespace,是指人为的将内存进行分隔,让不同内存区域的同名结构共存,从而解决在大型项目中可能出现的重名...
    99+
    2023-06-14
  • 如何正确使用PHP中的私有静态方法
    使用PHP中的私有静态方法是一种保护类内部逻辑的有效方式。私有静态方法只能在同一个类内部进行调用,外部无法访问,从而保证了程序的安全性和封装性。在编写PHP代码时,正确使用私有静态方法...
    99+
    2024-04-02
  • 怎么在Java中使用GUI中的事件绑定
    怎么在Java中使用GUI中的事件绑定?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。程序绑定的概念:绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。...
    99+
    2023-05-30
    java gui
  • 使用vs2022在.net6中调试带typescript的静态页面
    1、新建一个空的web项目 2、设计、建好目录结构 其中ts存放typescript源文件,web为网站根目录,scripts/js存放ts生成的js脚本。 index.html...
    99+
    2024-04-02
  • MVVMLight项目的绑定及各种使用场景示例分析
    目录一、绑定:1、元素绑定:2、非元素类型绑定: 2.1 Source属性:2.2 RelativeSource 属性:2.3 DataContext 属性:二、绑定的各种...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作