PHP的八个魔术常量
1. 什么魔术常量
预定义常量:预定义常量就是PHP内置的常量,预先定义好的
PHP有很多预定义常量,比如:PHP_VERSION(版本号)、PHP_OS(操作系统)。
这些普通的预定义常量在程序中的值是固定的,不会因为在不同的位置而改变自身的值。
在PHP有八个特殊的预定义常量,它们的值会随着它们在代码中的位置改变而改变,我们称之为魔术常量。
2. PHP的8个魔术常量
| 序号 | 魔术常量 | 示例 | 描述 |
|---|---|---|---|
| 1 | __LINE__ | 5 | 返回魔术常量输出时所在的行号 |
| 2 | __FILE__ | E:\www\1.php | 返回文件路径(绝对路径) |
| 3 | __DIR__ | E:\www | 返回文件所在的目录,当前文件位置:E:\www\1.php |
| 4 | __FUNCTION__ | taskList | 返回函数名称,区分大小写,不在函数中时返回空字符串 |
| 5 | __CLASS__ | app\controller\User | 返回当前所在类名,包含命名空间,区分大小写 |
| 6 | __METHOD__ | app\controller\User:test | 返回当前所在方法名,包含命名空间,区分大小写 |
| 7 | __NAMESPACE__ | app\controller | 返回当前命名空间,区分大小写 |
| 8 | __TRAIT__ | app\controller\Person | 返回当前所在Trait名,包含命名空间,区分大小写 |
3. 使用示例
前四个魔术常量
<?php
echo __LINE__;//3
echo __FILE__;//E:\www\1.php
echo __DIR__;//E:\www
echo userList();//userList
function userList()
{
echo __FUNCTION__;
}
后四个魔术常量
<?php
namespace app\controller;
trait Person {
public static function demo()
{
echo __TRAIT__;//app\controller\Person
}
}
class User
{
use Person;
public static function test()
{
echo __CLASS__;//app\controller\User
echo __METHOD__;//app\controller\User::test
}
}
User::test();
User::demo();
echo __NAMESPACE__;//app\controller
PHP的八个魔术常量的更多相关文章
- 几个 PHP 的“魔术常量”
PHP 向它运行的任何脚本提供了大量的预定义常量.不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了. 有八个魔术常量它们的值随着它们在 ...
- 【PHP】- 魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量.不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了.有八个魔术常量它们的值随着它们在代 ...
- PHP中的预定义常量、类常量和魔术常量的区别
PHP 向它运行的任何脚本提供了大量的预定义常量.不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了. 对于一些基本的常量是这些常量在 ...
- PHP的魔术常量(常用八大常量)
PHP的魔术常量都是由不同的扩展库定义的,只有在加载了这些扩展时才会出现,或者动态加载后 有八个魔术常量他们的值随着他们在代码中的位置改变而改变. __LINE__ 文件中的当前行号. 实列: &l ...
- PHP 魔术常量介绍
PHP 魔术常量 PHP 向它运行的任何脚本提供了大量的预定义常量. 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了. 有八个魔术常 ...
- PHP魔术常量
与J2E相比PHP没有九个内置对象,但他有八个魔术变量分别是: '__LINE__' 文件中的当前行号. '__FILE__ 文件的完整路径和文件名. '__DIR__' 文件所在的目录. '__FU ...
- php魔术方法和魔术常量
1.__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用. 2.__destruct() 当删除一 ...
- PHP面向对象——类常量,魔术常量与延期绑定
普通常量 define('常量名',常量值): 以前说过:define定义的常量,全局有效 无论是页面内,函数内,类内,都可以访问. 例: define('ACC','Deny') class ...
- Php 魔术常量
魔术常量 由于其值在程序运行过程中不允许更改,所以是常量:其值,又是运行环境不同而不现,所以叫魔术. __DIR__ 当前脚本文件的路径 示例: __LINE__ ...
随机推荐
- java final关键字与static关键字
一 final关键字 1.final修饰类不可以被继承,但是可以继承其他类. 例如: class Yy {} final class Fu extends Yy{} //可以继承Yy类 class ...
- 解读闭包,这次从ECMAScript词法环境,执行上下文说起
对于x年经验的前端仔来说,项目也做了好些个了,各个场景也接触过一些.但是假设真的要跟面试官敞开来撕原理,还是有点慌的.看到很多大神都在手撕各种框架原理还是有点羡慕他们的技术实力,羡慕不如行动,先踏踏实 ...
- flask_restful 的reqparse获取验证前端参数
required是设置必选非必选,nullable允不允许向传null,location指定参数获取的位置,可以多选,按前后顺序获取 parser.add_argument('app_id', typ ...
- Javascript模块化编程(一):模块的写法 (转)
Javascript模块化编程(一):模块的写法 原文作者: 阮一峰 日期: 2012年10月26日 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞 ...
- Dubbo直连方式
目录 一.dubbo概述 1. 基本架构 2. dubbo 支持的协议 二.直连方法 三.创建服务提供者 1. 思路 1. 创建maven web 2. pom.xml 3. 创建实体 4. 创建服务 ...
- Redis高级项目实战,都0202年了,还不会Redis?
导读 大家都听过1万小时定律,可事实真的是这样吗?做了1万小时的CRUD,不还只会CRUD吗,这年头不适当的更新自身下技术栈,出门和别人聊天吹牛的时候,都没拿不出手,(⊙o⊙)…Redis没入门的童鞋 ...
- neutron plugin 与 extension 编写流程
原文链接:neutron plugin 与 extension 编写流程 参考: 怎样写 OpenStack Neutron 的 Plugin (一)怎样写 OpenStack Neutron 的 P ...
- 计算机网络-网络层(1)IPv4和IPv6
IPv4数据报格式: 版本号 这4比特规定了数据报的IP 协议版本.通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分. 首部长度 以4字节为单位,没有选项的首部长度为5*4=20字节 服务类 ...
- Newbe.Claptrap 框架入门,第三步 —— 定义 Claptrap,管理商品库存
接上一篇 Newbe.Claptrap 框架入门,第二步 —— 简单业务,清空购物车 ,我们继续要了解一下如何使用 Newbe.Claptrap 框架开发业务.通过本篇阅读,您便可以开始学会添加一个全 ...
- SPSSAU数据分析思维培养系列1:数据思维篇
今天,SPSSAU给大家带来[数据分析思维培养]系列课程.主要针对第一次接触数据分析,完全不懂分析的小白用户,或者懂一些简单方法但苦于没有分析思路,不知道如何规范化分析. 本文章为SPSSAU数据分析 ...