web安全php基础_魔术常量__FUNCTION__与__METHOD__的区别

news2024/11/19 17:50:58

PHP 魔术常量

PHP 向它运行的任何脚本提供了大量的预定义常量。

不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

例如 LINE 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:

__LINE__

__LINE__输出当前文件中代码所在位置的当前行号。

在这里插入图片描述
输出如下
在这里插入图片描述

__FILE__

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
在这里插入图片描述
输出效果如下

在这里插入图片描述

__DIR__

文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)
在这里插入图片描述
输出为
在这里插入图片描述

__FUNCTION__

函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
在这里插入图片描述
输出为
在这里插入图片描述

__CLASS__

类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。

在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 _CLASS_ 对 trait 也起作用。当用在 trait 方法中时,_CLASS_ 是调用 trait 方法的类的名字。
在这里插入图片描述
在这里插入图片描述

__TRAIT__

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

在这里插入图片描述
输出如下
在这里插入图片描述

__METHOD__

类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
在这里插入图片描述
输出如下
在这里插入图片描述

__FUNCTION__与__METHOD__的区别

FUNCTION 返回 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
METHOD 返回类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
具体如下

<?php
//定义函数
function outFunction()
{
    echo '__METHOD__ =>'.__METHOD__;
    echo '<br>';
    echo '__FUNCTION__ =>'.__FUNCTION__;
}

//定义类
class Test
{
    static function gongwen()
    {
        echo '__METHOD__ =>'.__METHOD__;
        echo '<br>';
        echo '__FUNCTION__ =>'.__FUNCTION__;
    }

    static function bestphper()
    {
        function innerFunction()
        {
            echo '__METHOD__ =>'.__METHOD__;
            echo '<br>';
            echo '__FUNCTION__ =>'.__FUNCTION__;
        }

        innerFunction();
    }
}

//测试
Test::gongwen();
echo '<hr>';
Test::bestphper();
echo '<hr>';
outFunction();
?>

输出如下
在这里插入图片描述
可以看出主要有两种情况
情况一:
__FUNCTION__与__METHOD__ 同处于“类外”的函数体中,他们的返回值是一样一样滴.
情况二:
__FUNCTION__与__METHOD__ 同处于“类内”的函数体中,__METHOD__ 比 __FUNCTION__前面多了个“类名::”

__NAMESPACE__

当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)

实例:
在这里插入图片描述
输出如下
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装Pytorch及配置Pycharm

PyTorch是一个基于Torch的Python开源机器学习库&#xff0c;用于自然语言处理等应用程序。它主要由Facebookd的人工智能小组开发&#xff0c;不仅能够 实现强大的GPU加速&#xff0c;同时还支持动态神经网络&#xff0c;这一点是现在很多主流框架如TensorFlow都不支持的。 本文…

Service Computing Frontier Technology Experiment

任务说明 实验算法 空间数据索引RTree&#xff08;R树&#xff09;完全解析及Java实现 - 佳佳牛 - 博客园 (cnblogs.com) SFS 打开堆文件 t相当于一个指针 当指针指到不为空的时候 如果窗口未被占用那么 如果窗口是满的话那么代表完成 如果窗口没有满的话 把他加到窗口上&a…

k8s 第一篇 基础知识

一 k8s 1.1 概念 k8s 是一个能让应用部署到容器中&#xff0c;实现自动部署和管理更加高效 自能化的平台。 也就是说通过k8s&#xff0c;能够进行应用的自动化部署和扩容。 1.2 集群的架构流程 1.3 k8s的核心概念 1.4 k8s 集群规划 从第6集开始看

【分立元件】理解电阻

如果强行将某电压加在电子器件上&#xff0c;那么器件上被迫流过的电流是不可控的&#xff0c;电流具体是多少&#xff0c;是由器件本身的性质决定的。 比如同样的电压加载在导体和绝缘体两端&#xff0c;那么一般流过导体的电流会是大于流过绝缘体的。但要是超高电压下绝缘体…

单点登录SSO==MAXKEY

1-下载安装包安装启动 2-打开教程&#xff0c;里面说的很详细了 3- 测试 不想从这点进去也可以直接匿名打开个窗口直接访问 http://oauth.demo.maxkey.top:9521/demo-oauth/oauth20index.jsp 也会跳转到登录页面&#xff0c;输入账号密码后登录成功 乱输密码的话登录不成功还…

【算法设计与分析】素数测试问题——设计一个拉斯维加斯算法,对于给定的正整数,判断其是否为素数。

目录 一、问题描述二、分析三、运行结果四、代码 一、问题描述 试设计一个素数测试的偏真蒙特卡罗算法&#xff0c;对于测试的整数n&#xff0c;所述算法是一个关于logn的多项式时间算法。结合教材中素数测试的偏假蒙特卡罗算法&#xff0c;设计一个素数测试的拉斯维加斯算法。…

盛最多水的容器(力扣)双指针 JAVA

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。 输入&…

Tomcat安装配置及其出错的解决方法

文章目录 一、安装二、进行配置三、解决问题四、验证 一、安装 官网链接: https://tomcat.apache.org/ 1.选择 A r c h i v e s \color{red}{Archives} Archives 2.选择 T o m c a t \color{red}{Tomcat} Tomcat版本 3.在对应的版本中选择相对应的小版本 点击 b i n \color…

海盗船DDR5版本号VER命名规则

从华硕、技嘉、微星的内存QVL中可总结出如下规律 海盗船DDR5版本号命名规则 第一位数字 颗粒厂商 第二位数字 对应产品类型 第三位数字 DIE数 3 美光 01 A 4 三星 43 传统内存 02 B 5 海力士 53 非传统内存 03 C 04 D 05 E 8 …

JAVA线程池分析实现

1、定义线程池 /*** 使用给定的初始参数创建新的 ThreadPoolExecutor对象&#xff0c;就创建了一个线程池* param corePoolSize - 要保留在池中的线程数&#xff0c;即使它们处于空闲状态&#xff0c;若果allowCoreThreadTimeOut设置为ture&#xff0c;那么核心线程在keepAliv…

整理——xilinx FPGA 在线升级

一&#xff1a;xilinx FPGA 在线升级方案&#xff1a;&#xff08;系统搭建&#xff1a;MicroBlaze软核处理器&#xff0c;uart控制器&#xff0c;Axi-lite-user用户通信接口&#xff0c;MIG DDR3控制器&#xff0c;中断控制器等&#xff0c;以太网控制器&#xff09; 1.跑一个…

C#开发的OpenRA游戏之建造物品的窗口10

C#开发的OpenRA游戏之建造物品的窗口10 前面已经分析完成建造物品的过程,从物品进入队列,直到物品按时间进行生产完成。那么生产完成之后,又是怎么样放置到游戏的地图里面的呢?本文就来分析这个问题。 前面可以看到,当物品建造完成时,会在右边的面板上显示建造完成: 在…

类 模板 已经声明为非类 模板

类 模板 已经声明为非类 模板 解决方案 原因是在当前包下&#xff0c;已经定义了AA类 解决方案 更改模板类AA的类名

爬虫入门05——requests中的post请求

爬虫入门05——requests中的post请求 以百度翻译为例&#xff0c;我们如何输入内容后获取翻译后的结果呢 打开百度翻译的界面 右键单击后选择检查 点击网络 在翻译的框内输入内容&#xff0c;就以输入“你好”为例&#xff0c; 点击sug&#xff0c;点击标头&#xff0c…

Linux 文件系统

文章目录 一、设备专用文件&#xff08;设备文件&#xff09;设备 ID 二、磁盘与分区1. 磁盘驱动器2. 磁盘分区 三、文件系统四、i-nodeext2 中的 i-node 与数据块指针 五、虚拟文件系统&#xff08;VFS&#xff09;六、日志文件系统七、单根目录层级与挂载点 一、设备专用文件…

aidl原理

aidl 流程 为了方便理解&#xff0c;先将binder看做是一个黑盒子 aidl的流程图如下 demo连接添加链接描述 Androidstudio 会帮我们生成emotionAidlService&#xff0c;具体目录在n\build\generated\aidl_source_output_dir\debug\out\com\example\emotion\emotionAidlServic…

swiftUI和swift的区别

概述 SwiftUI是苹果公司推出的一种用于构建iOS、macOS、watchOS和tvOS应用程序界面的框架。它是基于Swift编程语言开发的&#xff0c;旨在简化UI开发过程并提供实时预览功能&#xff0c;使开发人员可以更快地构建出漂亮的应用程序界面。 Swift是苹果公司推出的一种面向对象的…

【QT】混合UI设计

虽然利用Designer和代码的设计方式都可以开发GUI&#xff0c;但是毫无疑问的是最有效的开发方式是利用两者进行混合开发。 下面这个实验例子来自《QT5.9 C开发指南》&#xff0c;我做了小部分修改&#xff0c;最终效果是这样&#xff1a; 图标导入 这次我们要开发的是一个有工…

AprilTag码估算平面法向量+相机标定

由于本人部分原创博客发布在古月居论坛&#xff0c;详细内容点击链接跳转&#xff1a; 1. AprilTag探索和原理分析 2. 相机标定&#xff0c;基于AprilTag估算平面法向量

web安全php基础_php常量及可变变量(魔术变量)

常量 php中常量是一个简单值的标识符。该值在脚本中不能改变。 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。 常量有两点需要特别注意的地方 常量在整个脚本中都可以使用。常量值被定义后&#xff0c;在脚本的其他任何…