在PHP中,_file_或microtime_float中的“_”代表什么和怎么用
发布网友
发布时间:2022-04-06 01:52
我来回答
共2个回答
热心网友
时间:2022-04-06 03:22
在php中,对于变量名与函数、过程名的约定是:可以是任何字母、数字、下画线组成,不能与数字开始。
_file_ 或microtime_float, 也就是定义了一个变量或是常量之类的标志符。_什么都不代表。
在php语言中,__(两个下划线在一起)定义的函数、方法比较特殊,称之为“魔术”方法、魔术常量等,以下是一些常见的:
PHP 魔术常量
__LINE__ //文件中的当前行号(包含注释行)
__FILE__ //文件的完整路径和文件名
__FUNCTION__ //当前所在的函数名称(PHP 4.3.0 新增)
__CLASS__ //当前所在的类的名称( PHP 4.3.0 新增)
__METHOD__ //当前所在的类的方法名( PHP 5.0.0 新增)
魔术方法:
1、__construct()
当实例化一个对象的时候,这个对象的构造方法将首先被调用;
我们知道php5对象模型和类名相同的函数是类的构造函数,那么如果同时定义构造函数和__construc()方法的话,php5会默认调用__contruct()而不会调用同类名函数,所以__contruct()作为类的默认构造函数
2、__destruct()
析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
3、__get(string $name)
当试图读取一个并不存在的属性时被调用;如果试图读取一个对象并不存在的属性的时候,php就会给出错误的信息。如果在类里添加__get方法,并且我们可以用这个函数实现类似java中的反射的各种操作。
4、__set(string $name, mixed $value)
给未定义的变量赋值时将被调用
5、__call(string $name, array $arguments)
当调用一个不可访问方法(如未定义,或者不可见)时,__call() 会被调用。
6、__toString()
当打印一个对象的时候被调用,这个方法类似于java的toString方法,当我们直接打印对象的时候回调这个函数。追问既然这"_"不代表什么,那么是不是可以不要这"_"呢?如 “_function_” 变成"function" ,“_link_”变成 "link" ,microtime_float 变成 microtime float ,_construct()变成 construct() ,意义和用法会是一样的吗?
追答不能一概而论。
“_link_”变成 "link",这个符合标识符规则。
microtime_float 变成 microtime float 这个就不符合规则了。因为原来是一个标识符,另一个变成两个单词了。
__construct()变成 construct() 也是不行的,少一个下划线都不行,少一个就不是魔法方法,而变成普通的方法了。
一般来说,_想当于连字符,其用途是将两个独立的单词变成一个符合规则的标识符,比如:我要定义某个变量,又想要这个变量名有意义,让我一看就知是干什么的,比如 table_have_data,如果不用_连起来就成了三个单词,而这是php语法规则所不允许的。
热心网友
时间:2022-04-06 04:40
不代表什么“_file_”是一体的。追问那你知道这个“_”是怎么用吗?