php魔术变量和13个PHP魔术函数

时间:2021-10-28 02:50:04

PHP魔术变量确切地说是PHP魔术常量,不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。比如说__LINE__放在不同的地方是显示不同的行数

PHP魔术常量(8个)

__LINE__  文件中的当前行号。

<?php
echo '这是第 " ' . __LINE__ . ' " 行';
?>

  以上实例输出结果为: 这是第 “ 2 ” 行

<?php
你好吗?
echo '这是第 " ' . __LINE__ . ' " 行';
?>

  以上实例输出结果为: 这是第 “ 3 ” 行

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

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

__FUNCTION__  常量返回该函数被定义时的名字

__CLASS__  常量返回该类被定义时的名字(区分大小写)。

__METHOD__  类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

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

PHP魔术函数(13个)

  __construct()   实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

  __destruct()   当删除一个对象或对象操作终止时被调用。

  __call()      对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用__call函数。

  __get()     读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。

  __set()     设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用__set函数。

  __toString()   打印一个对象的时被调用。如echo $obj;或print $obj;

  __clone()    克隆对象时被调用。如:$t=new Test();$t1=clone $t;

  __sleep()    serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

  __wakeup()   unserialize时被调用,做些对象的初始化工作。

  __isset()    检测一个对象的属性是否存在时被调用。如:isset($c->name)。

  __unset()    unset一个对象的属性时被调用。如:unset($c->name)。

  __set_state()  调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

  __autoload()   实例化一个对象时,如果对应的类不存在,则该方法被调用。

PHP超级全局变量(9个)

  $GLOBALS  储存全局作用域中的变量

  $_SERVER  获取服务器相关信息

  $_REQUEST  获取POST和GET请求的参数

  $_POST  获取表单的POST请求参数

  $_GET  获取表单的GET请求参数

  $_FILES  获取上传文件的的变量

  $_ENV  获取服务器端环境变量的数组

  $_COOKIE   浏览器cookie的操作

          设置cookie:setcookie(name, value, expire, path, domain);

          获取cookie:$_COOKIE["user"];

          删除cookie:setcookie("user", "", time()-3600);//设置过期时间

  $_SESSION  服务端session的操作

          使用session前一定要session_start()启动session

          储存session:$_SESSION["name"]="King";//数组操作

          销毁session:unset($_SESSION["name"]);//销毁一个

          session_destroy()和unset($_SESSION);//销毁所有的session

php魔术变量和13个PHP魔术函数的更多相关文章

  1. PHP超级全局变量、魔术变量和魔术函数的区别和联系

    PHP超级全局变量.魔术变量和魔术函数的区别和联系 一.总结 一句话总结:PHP超级全局变量主要用于web开发,魔术变量主要用于输出当前对象的信息,魔术函数则是对象的常用方法 相同点: 1.PHP超级 ...

  2. Paip&period;最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1

    Paip.最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1.1.1       C++内建变量(__LINE__).... 1.1.2       ...

  3. PHP 魔术变量

    PHP 魔术变量 PHP 向它运行的任何脚本提供了大量的预定义常量. 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了. 有八个魔术常 ...

  4. php &lowbar;&lowbar;FILE&lowbar;&lowbar;&comma;&lowbar;&lowbar;CLASS&lowbar;&lowbar;等魔术变量&comma;及实例&lpar;转&rpar;

    今天看到一个魔术变量,是以前没见过的,__DIR__,我查了查,发现原来是php5.3新增的,顺便举几个例子,解释一下php的魔术变量 1,__FILE__ 文件的完整路径和文件名.如果用在被包含文件 ...

  5. php &lowbar;&lowbar;FILE&lowbar;&lowbar;&comma;&lowbar;&lowbar;CLASS&lowbar;&lowbar;等魔术变量&comma;及实例

    今天突然看到几个自己不认识的魔术变量 不知道怎么用于是就上网查了一下,看到了这篇博客,写的真不错,希望自己以后也能学会这样总结 张映 发表于 2010-12-13 分类目录: php 标签:php,  ...

  6. PHP 魔术变量和魔术函数详解

    魔术变量 PHP 向它运行的任何脚本提供了大量的预定义常量. 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了. 有八个魔术常量它们的 ...

  7. php魔术变量以及命名空间

    魔术变量: PHP 向它运行的任何脚本提供了大量的预定义常量. 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了. 有八个魔术常量它们 ...

  8. PHP魔术变量和魔术方法

    基础知识:魔术变量和魔术方法 魔术变量:最初PHP魔术变量的出现主要是为了方便开发者调试PHP的代码;当然也可以利用这个实现特殊需求.在写法上魔术变量前后都有两个下划线. 如:_LINE_:返回文件中 ...

  9. php之快速入门学习-16(PHP 魔术变量)

    PHP 魔术变量 PHP 向它运行的任何脚本提供了大量的预定义常量. 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了. 有八个魔术常 ...

随机推荐

  1. 使用Canvas绘制背景图

    原文  http://www.imququ.com/post/use-canvas-as-background-image.html 最近iCloud Web的Beta版换了UI,整体风格变得和iOS ...

  2. (spring-第20回【AOP基础篇】)Spring与事务

    要想了解Spring的事务,首先要了解数据库事务的基本知识,数据库并发会产生很多问题,Spring使用ThreadLocal技术来处理这些问题,那么我们必须了解Java的ThreadLocal技术.下 ...

  3. LintCode First Position of Target

    找指定target的最左位置. class Solution { /** * @param nums: The integer array. * @param target: Target to fi ...

  4. 未找到与约束contractname Microsoft&period;VisualStudio&period;Utilities&period;IContentTypeRegistryService

    在項目中遇到的問題,網上找到的答案,做個記錄, 项目能打开,但是当要在项目中查看文件时弹出 未找到与约束 Microsoft.VisualStudio.Utilities.IContentTypeRe ...

  5. 基于RecyclerView的瀑布流实现

    fragment的布局: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xm ...

  6. 为何IntelliJ IDEA比Eclipse更好

    阅读本文大概需要 4.2 分钟. 本文为译文,翻译:彭博 https://www.oschina.net/news/26929 争论 有一些没有唯一正确答案的“永恒”的问题,例如,更好的是:Windo ...

  7. oracle中&OpenCurlyDoubleQuote;ORA-00060&colon; 等待资源时检测到死锁” 或存储过程编译卡死 解决方法

    之前在调试存储过程时,出现卡死情况,无法插入数据 解决方法 1.查看那些表被锁住: --1.查看那些表被锁住--- select b.owner,b.object_name,a.session_id, ...

  8. while和do-while语句的异同之处

    while型语句: “先判断,后执行”: while 执行流程: 当程序执行到 while 循环时 , 会首先判断小括号里的值 ,如果值 为假 :结束while语句 , 程序继续向下走  为真 :会把 ...

  9. Android AndFix修复方式的限制

    这里阅览了很多网上关于修复的资料,一一贴在这里便于查看: https://github.com/alibaba/AndFix  这是官方处  要了解使用,一定得看看这里. http://www.jia ...

  10. sql 内联,左联,右联,全联

    联合查询效率较高,以下例子来说明联合查询(内联.左联.右联.全联)的好处: T1表结构(用户名,密码) userid (int) username varchar(20) password  varc ...