php预定义变量,超全局变量,魔术方法,特殊函数变量使用

<?php
/*
 * 本代码全部为测试函数代码,部分注释和写实例
 *
 * 修改php.ini variables_order=”EGPCS”
 * 请注意$_REQUEST在优先级传参的时候会造成数据被覆盖,出现重大bug,建议不要使用
 *
 * 请注意一下是重要的一些超全局参数并不是全部的
 *
 * 软件全部都是编译安装,/usr/local/php
 *
 *
 *
 */
header("Content-type:text/html;charset=utf-8");

echo $_SERVER[‘PHP_SELF‘];//返回当前执行脚本的文件名。
echo ‘<br><br><br>‘;

echo $_SERVER[‘GATEWAY_INTERFACE‘];//返回服务器使用的 CGI 规范的版本
echo ‘<br><br><br>‘;

echo $_SERVER[‘SERVER_ADDR‘];//返回当前运行脚本所在的服务器的 IP 地址
echo ‘<br><br><br>‘;

echo $_SERVER[‘SERVER_NAME‘];//返回当前运行脚本所在的服务器的主机名
echo ‘<br><br><br>‘;

echo $_SERVER[‘SERVER_SOFTWARE‘];//返回服务器标识字符串
echo ‘<br><br><br>‘;

echo $_SERVER[‘SERVER_PROTOCOL‘];//返回请求页面时通信协议的名称和版本
echo ‘<br><br><br>‘;

echo $_SERVER[‘REQUEST_METHOD‘];//返回访问页面使用的请求方法
echo ‘<br><br><br>‘;

echo $_SERVER[‘REQUEST_TIME‘];//返回请求开始时的时间戳
echo ‘<br><br><br>‘;

//echo $_SERVER[‘QUERY_STRING‘];//返回查询字符串,如果是通过查询字符串访问此页面
//echo ‘<br><br><br>‘;

echo $_SERVER[‘HTTP_ACCEPT‘];//返回来自当前请求的请求头
echo ‘<br><br><br>‘;

//echo $_SERVER[‘HTTP_ACCEPT_CHARSET‘];//返回来自当前请求的 Accept_Charset 头
//echo ‘<br><br><br>‘;

echo $_SERVER[‘HTTP_HOST‘];//返回来自当前请求的 Host 头
echo ‘<br><br><br>‘;

//echo $_SERVER[‘HTTP_REFERER‘];//返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)
//echo ‘<br><br><br>‘;

//echo $_SERVER[‘HTTPS‘];//是否通过安全 HTTP 协议查询脚本
//echo ‘<br><br><br>‘;

echo $_SERVER[‘REMOTE_ADDR‘];//返回浏览当前页面的用户的 IP 地址
echo ‘<br><br><br>‘;

//echo $_SERVER[‘REMOTE_HOST‘];//返回浏览当前页面的用户的主机名
//echo ‘<br><br><br>‘;

echo $_SERVER[‘REMOTE_PORT‘];//返回用户机器上连接到 Web 服务器所使用的端口号
echo ‘<br><br><br>‘;

echo $_SERVER[‘SCRIPT_FILENAME‘];//返回当前执行脚本的绝对路径
echo ‘<br><br><br>‘;

echo $_SERVER[‘SERVER_ADMIN‘];//该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数
echo ‘<br><br><br>‘;

echo $_SERVER[‘SERVER_PORT‘];//Web 服务器使用的端口。默认值为 “80”
echo ‘<br><br><br>‘;

echo $_SERVER[‘SERVER_SIGNATURE‘];//返回服务器版本和虚拟主机名
echo ‘<br><br><br>‘;

//echo $_SERVER[‘PATH_TRANSLATED‘];//当前脚本所在文件系统(非文档根目录)的基本路径
//echo ‘<br><br><br>‘;

//echo $_SERVER[‘SCRIPT_NAME‘];//返回当前脚本的路径
//echo ‘<br><br><br>‘;

//echo $_SERVER[‘SCRIPT_URI‘];//返回当前页面的 URI
//echo ‘<br><br><br>‘;

echo $_SERVER["DOCUMENT_ROOT"];//返回当前执行脚本的文件名。
echo ‘<br><br><br>‘;

//查看所有$_SERVER所有目前可以使使用的参数var_dump($_SERVER);就可以看到
/*
 *
 * 下面是PHP内置的预定义常量
 *
 * 这个也不是完整版,根据你php.ini配置会有些不同
 *
 * 请注意官方的文档中文版本和英文版本的函数数量不一样,可能是翻译的时候没翻译完全
 *
 */

echo PHP_VERSION;//返回当前执行脚本的文件名。
echo ‘<br><br><br>‘;

//if(version_compare(PHP_VERSION,‘5.3.0‘,‘<‘))  die(‘require PHP > 5.3.0 !‘);//很常见判断服务器版本是不是符合程序脚本

echo PHP_OS;//当前系统类型
echo ‘<br><br><br>‘;

echo PHP_SAPI;//查看当前php运行模式,cgi-fcgi,apache2handler,cli,请注意fcgi不只是php-fpm+nginx,在apache下也是可以作为fcgi模式运行的
echo ‘<br><br><br>‘;

echo PHP_INT_MAX;//int类型的最大值
echo ‘<br><br><br>‘;

echo PHP_ZTS;//未知
echo ‘<br><br><br>‘;

echo PHP_DEBUG;//是都开始debug
echo ‘<br><br><br>‘;

echo PHP_MAXPATHLEN;//最大路径长度支持
echo ‘<br><br><br>‘;

echo DEFAULT_INCLUDE_PATH;//默认包含路径,
echo ‘<br><br><br>‘;

echo PEAR_INSTALL_DIR;//php官方主扩展与应用库的路径
echo ‘<br><br><br>‘;

echo Get_Current_User();//获取当前进程的用户名
echo ‘<br><br><br>‘;

echo Zend_Version();//zend引擎版本
echo ‘<br><br><br>‘;

echo PEAR_EXTENSION_DIR;//php非官方扩展与应用库的路径
echo ‘<br><br><br>‘;

echo PHP_EXTENSION_DIR ;//php扩展linux.so windows.dll库
echo ‘<br><br><br>‘;

echo PHP_PREFIX;//php安装路径,linux和windows不同,请注意
echo ‘<br><br><br>‘;

echo PHP_BINDIR;//php bin目录
echo ‘<br><br><br>‘;

echo PHP_LIBDIR;//php lib库文件目录
echo ‘<br><br><br>‘;

echo PHP_DATADIR;//php共享数据目录 ${prefix}/share
echo ‘<br><br><br>‘;

echo PHP_SYSCONFDIR;//php配置文件目录 /usr/local/php/etc 注意编译的时候如果不是这个目录请到默认的/etc/php.ini
echo ‘<br><br><br>‘;

echo PHP_LOCALSTATEDIR;//php本地var目录,默认存放日志和pid文件的路径
echo ‘<br><br><br>‘;

echo PHP_CONFIG_FILE_PATH;//php现在运行配置文件目录 /etc
echo ‘<br><br><br>‘;

echo PHP_CONFIG_FILE_SCAN_DIR;//php脚本文件路径
echo ‘<br><br><br>‘;

echo PHP_SHLIB_SUFFIX;//php扩展文件后缀,linux是so.windows是dll
echo ‘<br><br><br>‘;

echo PHP_OUTPUT_HANDLER_START;//是否打开页面缓冲区,和ob_start系列函数相关
echo ‘<br><br><br>‘;

echo PHP_OUTPUT_HANDLER_CONT;//缓冲区输出大小
echo ‘<br><br><br>‘;

echo PHP_OUTPUT_HANDLER_END;//缓冲区结束
echo ‘<br><br><br>‘;

echo E_ERROR;//一般是严重错误报告
echo ‘<br><br><br>‘;

echo E_WARNING;//一般是警告报告
echo ‘<br><br><br>‘;

echo E_PARSE;//语法解析方面的错误
echo ‘<br><br><br>‘;

echo E_NOTICE;//提示类型报告
echo ‘<br><br><br>‘;

echo E_CORE_ERROR;//致命错误报告
echo ‘<br><br><br>‘;

echo E_CORE_WARNING;//非致命php警告
echo ‘<br><br><br>‘;

echo E_COMPILE_ERROR ;//致命编译错误
echo ‘<br><br><br>‘;

echo E_COMPILE_WARNING;//编译警告
echo ‘<br><br><br>‘;

echo E_USER_ERROR;//致命的用户产生的错误
echo ‘<br><br><br>‘;

echo E_USER_WARNING;//非致命性的用户生成的警告
echo ‘<br><br><br>‘;

echo E_USER_NOTICE;//用户生成的通知
echo ‘<br><br><br>‘;

echo E_ALL;//error_reporting()设置错误级别 E_ALL全部错误
echo ‘<br><br><br>‘;

echo E_STRICT;//编码标准化警告(建议如何修改以向前兼容)
echo ‘<br><br><br>‘;

//echo __COMPILER_HALT_OFFSET__;//__halt_compiler()函数,获取数据开始字节所在的位置
//允许的任意的二进制代码的内容被 Zend Framework 中的 PHP 文件或由它们产生的文件禁止。 这个功能的使用只对一些安装脚本开放
//echo ‘<br><br><br>‘;

echo EXTR_OVERWRITE;//extract()函数,
echo ‘<br><br><br>‘;
/*
 * extract() 检查每个键名看是否可以作为一个合法的变量名,同时也检查和符号表中已有的变量名的冲突。对待非法/数字和冲突的键名的方法将根据 extract_type 参数决定。可以是以下值之一:

EXTR_OVERWRITE
如果有冲突,覆盖已有的变量。
EXTR_SKIP
如果有冲突,不覆盖已有的变量。
EXTR_PREFIX_SAME
如果有冲突,在变量名前加上前缀 prefix 。
EXTR_PREFIX_ALL
给所有变量名加上前缀 prefix 。自 PHP 4.0.5 起这也包括了对数字索引的处理。
EXTR_PREFIX_INVALID
仅在非法/数字的变量名前加上前缀 prefix 。本标记是 PHP 4.0.5 新加的。
EXTR_IF_EXISTS
仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。可以用在已经定义了一组合法的变量,然后要从一个数组例如 $_REQUEST 中提取值覆盖这些变量的场合。本标记是 PHP 4.2.0 新加的。
EXTR_PREFIX_IF_EXISTS
仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。本标记是 PHP 4.2.0 新加的。
EXTR_REFS
将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值。可以单独使用这个标志或者在 extract_type 中用 OR 与其它任何标志结合使用。本标记是 PHP 4.3.0 新加的。
如果没有指定 extract_type ,则被假定为 EXTR_OVERWRITE。

注意 prefix 仅在 extract_type 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 时需要。如果附加了前缀后的结果不是合法的变量名,将不会导入到符号表中。前缀和数组键名之间会自动加上一个下划线。

extract() 返回成功导入到符号表中的变量数目。
 *
 *
 */
echo E_RECOVERABLE_ERROR;//获的致命错误。这就像一个e_error但可以通过一个用户定义的被处理
echo ‘<br><br><br>‘;

/*
 *
 * 下面是几个 PHP 的“魔术常量”
 *
 *
 *
 *
 *
 *
 *
 */

echo __LINE__;//返回当前执行脚本的行号
echo ‘<br><br><br>‘;

echo __FILE__;//返回当前执行脚本的全路径文件名。
echo ‘<br><br><br>‘;

echo __DIR__;//返回当前执行脚本的文件的路径。
echo ‘<br><br><br>‘;

class trick
{
      function dog()
      {
                echo __FUNCTION__;//返回当前方法名称
      }
      function cat()
      {
                echo __METHOD__;//返回当前使用的类的方法名称
      }
}
$obj=new trick();
$obj->dog();
echo ‘<br>‘;
$obj->cat();
echo ‘<br><br><br>‘;

/*
 *
 * 引用php手册实例
 *
 *
 */

trait PeanutButter {
    function traitName() {echo __TRAIT__;}
}

trait PeanutButterAndJelly {
    use PeanutButter;
}

class Test {
    use PeanutButterAndJelly;
}

(new Test)->traitName();
echo ‘<br><br><br>‘;

echo __NAMESPACE__;//返回当前执行脚本的定义的空间命名。
echo ‘<br><br><br>‘;

/*
 *
 * php魔术方法
 *
 *
 *
1、__construct()
实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。 

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

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

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

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

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

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

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

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

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

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

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

13、__autoload()
实例化一个对象时,如果对应的类不存在,则该方法被调用。
 *
 *
 */
时间: 2024-08-05 15:22:08

php预定义变量,超全局变量,魔术方法,特殊函数变量使用的相关文章

php学习笔记 [预定义数组(超全局数组)]

<?php  预定义数组: * 自动全局变量---超全局数组 * * 1.包含了来自WEB服务器,客户端,运行环境和用户输入的数据 * 2.这些数组比较特别 * 3.全局范围内自动生效,都可以直接使用这些数组 * 4.用户不能自定义这些数组,但这些数组的操作方式和自己定义的数组操作的方式一样 * 5.在函数中直接可以使用这些数组 * * $_GET //经由URL请求提交至脚本的变量 * $_POST //经由HTTP POST 方法提交到脚本的变量 * $_REQUEST //经由GET ,

PHP基础-PHP中预定义的超全局数组

预定义数组: 自动全局变量---超全局数组 1. 包含了来自WEB服务器,客户端,运行环境和用户输入的数据 2. 这些数组比较特别 3. 全局范围内自动生效,都可以直接使用这些数组 4. 用户不能自定义这些数组, 但这些数据操作方式又和我们自定义的数组操作方式一样 5. 在函数中直接可以使用这些数组 $_GET //经由URL请求提交至脚本的变量,表单默认提交方式和链接提交方式 $_POST //经由HTTP POST 方法提交到脚本的变量 $_REQUEST //经由GET, POST和COO

预定义数组(超全局数组)]

* 自动全局变量---超全局数组 * * 1.包含了来自WEB服务器,客户端,运行环境和用户输入的数据 * 2.这些数组比较特别 * 3.全局范围内自动生效,都可以直接使用这些数组 * 4.用户不能自定义这些数组,但这些数组的操作方式和自己定义的数组操作的方式一样 * 5.在函数中直接可以使用这些数组 * * $_GET //经由URL请求提交至脚本的变量 * $_POST //经由HTTP POST 方法提交到脚本的变量 * $_REQUEST //经由GET , POST和COOKIE机制提

PHP中预定义的超全局数组

我们先来了解一下什么是超全局数组: 自动全局变量----超全局数组 1.包含了来自web服务器,客户端,运行环境和用户输入的数据 2.这些数组是特别的 3.全局范围内自动生效,都可以直接使用这些数组,前面无需加global 4.用户不能自定义这些数组 接下来我们看看有哪些超全局数组: $_GET:由URL请求提交至脚本的变量 $_POST:由HTTP POST 方法提交到脚本的变量 $_REQUEST:由GET.POST.COOKIE机制提交到脚本的变量,因此该数组并不值得信任,尽量不去使用 $

飘逸的python - 什么是魔术方法(magic method)

我们经常看到各种被双下划线环绕的方法,如__init__,它们就是魔术方法. 魔术方法是python语言预定好的"协议",不同魔术方法在不同场景下,会被隐式调用.我们通过重载这些方法,从而操控各种行为. class A(object): def __str__(self): return "I am A,2333" def __len__(self): return 42 a = A() print a#输出 "I am A,2333" prin

js中子页面父页面方法和变量相互调用

(1)子页面调用父页面的方法或者变量: window.parent.方法()或者变量名window.parent相当于定位到父页面 之后的操作和在父页面中写代码一样写 window.parent.aa();//调取aa函数 window.parent.bb;//调取bb变量 例如:想在子页面中得到id为aaa的文本框的值 window.parent.$("#aaa").val();//这种写法的前提是引用了jquery window.parent.getElementById(&quo

预定义变量基本概念

超全局变量---超全局变量是在全部作用域中始终可用的内置变量. 每个php进程都对应一套预定义变量. PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用.在函数或方法中无需执行 global $variable; 就可以访问它们. PHP提供了9种超全局数组/变量 (1)$_GET (2)$_POST (3)$_REQUEST (4)$_SERVER (5)$_ENV (6)$_FILE (7)$_COOKIE (8)$_SESSION (9)$GLOBALS

了解预定义变量$_SERVER

这一节主要内容是了解预定义变量$_SERVER的用法. $_SERVER 是一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组.这个数组中的项目由 Web 服务器创建.不能保证每个服务器都提供全部项目:服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目.这也就意味着大量的此类变量都会在? CGI 1.1 规范中说明,所以应该仔细研究一下. $HTTP_SERVER_VARS 包含着相同的信息,但它不是一个超全局变量. (

PHP可变变量,预定义变量,综述,$_GET数组

可变变量 所谓可变变量,就是一个变量的名,又是一个变量. 可变变量的语法是php很特殊的语法--其它语言中少见. $v1 = "abc";    //这是一个字符串变量,其内容是字符串"abc" $abc = 10;      //这是一个普通变量,其内容是数字10 echo $$v1;      //此时,就是所谓的"可变变量" 怎么理解可变变量 1,凡是$符号出现,就会有可能理解为是一个变量 2,这里第一个"$"出现了,则