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

news/2024/10/23 11:25:27/

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.ppmy.cn/news/757467.html

相关文章

openfeign 不能处理text/plain的方法

不做特殊处理&#xff0c;openfeign 不能反序列化 对方返回的 数据 &#xff0c;如果response header是text/plain or text/json的话。通常会出现 Could not extract response: no suitable HttpMessageConverter found for response type [cn.justme.sboot.entity.BaseResp<…

华为6605AC控制器大型组网wlan pool技术应用(自动漫游)

AC命令行配置&#xff1a; dis current-configuration set memory-usage threshold 0 ssl renegotiation-rate 1 vlan batch 100 vlan pool vlan_pool_test vlan 11 to 12 diffserv domain default radius-server template default free-rule-template name default_free_rule …

vue 进阶

目录 ref 引用 什么是 ref 引用 使用 ref 引用 DOM 元素 使用 ref 引用组件实例 控制文本框和按钮的按需切换 购物车案例 请求数据列表 Footer子组件 计算勾选商品价格 商品的数量 计算勾选商品总数量 ref 引用 什么是 ref 引用 ref 用来辅助开发者在 不依赖于 jQu…

香格里拉集团入驻天猫开设食品旗舰店;OMNI新荤主义全新发布植物海鲜系列 | 食品饮料新品...

雀巢、沃尔玛、麦当劳中国、嘉吉公司、植物基品牌OMNI新荤主义、明星精酿品牌VEDETT、八马茶业、橄榄时光、香格里拉集团等企业最新动态。 新店开业 香格里拉集团入驻天猫开设食品旗舰店 香格里拉集团正式入驻天猫并开设“香格里拉食品旗舰店”。这是继推出微信小程序餐饮旗舰店…

淘宝(tmall)店铺旗舰店商品数据分析接口代码教程

淘宝&#xff08;tmall)店铺旗舰店商品数据分析接口代码教程如下&#xff1a; 1.公共参数 名称类型必须描述&#xff08;接口支持高并发&#xff09;keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff0c;点击获取请求key和secret&#xff09;secretString是调…

越南中原传奇集团首家海外咖啡旗舰店上海开业;大陆集团长春技术中心新大楼正式启用 | 美通企业日报...

美通社要闻摘要&#xff1a; 默克投资2900万欧元于上海开设生物安全检测实验中心。大陆集团长春技术中心新大楼正式启用。宁德时代与FlexGen达成10GWh电池储能系统供应协议。麦格纳行业首创热塑性对开式汽车尾门上市。Club Car嘉兴工厂正式开业。英力士苯领LURAN SAN C将用于小…

华南首家高达基地旗舰店将于29日开业;苏州四季酒店将于2023年末开业 | 美通企业日报...

美通社要闻摘要&#xff1a; 华南地区首家高达基地旗舰店将于10月29日正式开业。苏州四季酒店将于2023年年末开业。上海西岸美高梅、青岛钓鱼台、青岛美高梅酒店将于2023年开业。玛莎拉蒂和BARBIE开展合作。唯链区块链技术助力永璞咖啡对其产品进行商品溯源和渠道管理。中控技术…

Android GlSurfaceView 入门教程 : 绘制一个三角形

1. GlSurfaceView是什么 GlSurfaceView是Android中的一个类&#xff0c;继承自SurfaceView&#xff0c;用于显示OpenGL ES图形渲染的一个视图。 OpenGL ES是一种跨平台的图形API&#xff0c;用于渲染2D和3D图形&#xff0c;也可以将相机的画面显示到GlSurfaceView上&#xff0…