PHP语法总结

以下内容总结自http://php.net/manual/zh/

  • 基本语法
    • 从HTML中分离:
      • 大多数情况下 PHP 都是嵌入在 HTML 文档中的
      • 高级分离技术:

PHP遇到?>结束符号后会直接打印下面的内容

<?php

if ($expression) {

    ?>

    <strong>This is true.</strong>

    <?php

} else {

    ?>

    <strong>This is false.</strong>

    <?php

}

?>

  • 指令分隔符:用分号
  • 注释:/*……*/  或//
  • 类型
    • 支持的类型
      • boolean、integer、float、string四种标准型,array、object两种复合型,还有Resource、NULL、callable三种特殊类型
      • 在调试时使用var_dump查看关于变量的所有信息,(会将对象全部属性展开打印出来)和他相同的还有print_r() 显示关于一个变量的易于理解的信息。
    • 类型转换
      • $foo = (int)$bar;
      • 或settype($foo, "integer");
    • 判断是否是某个类型
      • 使用is_int( )、is_string()等
      • if (is_int($an_int)){…..}
      • 得到类型:gettype()
    • 基本变量的一些参考
      • PHP_INT_SIZE表示int的字长
      • PHP_INT_MAX表示int的最大值
      • 当从浮点数转换成整数时,将向零取整。
    • 字符串
      • unicode编码:使用 utf8_encode()和 utf8_decode()
      • 单引号:所有的字符原样输出,单引号本身用\转义
      • 双引号:支持转义字符,双引号中间的变量会被替换成值,可用花括号明确表明界限

"He drank some {$beer}s"

  • heredoc结构:像一个没用引号括起来的双引号字符串,用<<<+标签名表示开头,用标签结束。结束标签必须在一行的开头例如:

$str = <<<EOD

Example of string

spanning multiple lines

using heredoc syntax.

EOD;

标签可用双引号括起来以示和Nowdoc的区别

  • Nowdoc结构:不进行任何转义操作。标签用单引号括起来。

$str = <<<'EOD'

Example of string

spanning multiple lines

using nowdoc syntax.

EOD;

  • 字符串中的变量名可以直接由其他字符串解析生成

<?php

$a = "foo";

$foo = "this is foo";

echo "{${$a}}";

?>

  • 读写字符
    • $str[2] = 'a';
    • strlen:取字符串长度
    • substr(string $string , int $start [, int $length ] )取一个子串。
  • 其他操作
    • 连接:用点.直接连接,不能用加号。
    • 若和数字相加,则转化成数值如"10 pigs"+3=3
  • 数组
    • 概述:PHP的数组是一个把value映射到key的有序映射,key还可以是数组,因此可以表示很多数据结构。
    • 定义数组:

array(  key =>  value
     , ...
     )
// 键(key) 可是是一个 整数(integer) 或 字符串(string),不能用数组和对象作为键(key)。省略键名则键名自动变为整数。$firstquarter  = array(1 => 'January', 'February', 'March');将自动累加
// 值(value) 可以是任意类型的值

  • 访问:使用方括号访问

$arr[key] = value;

$arr[] = value;//新建元素

  • 删除键:unset($arr[5]);

unset($arr);//全部删除

  • 遍历数组:foreach($arry as $i)
  • 对象
    • 使用new建立。详见后面的讨论

<?php

class foo

{

    function do_foo()

    {

        echo "Doing foo."; 

    }

}

 

$bar = new foo;

$bar->do_foo();

?>

  • 资源类型:
    • 保存打开文件、数据库连接、图形画布区域等的特殊句柄。
  • NULL类型:
    • 空类型
  • Callbacks类型
    • 回调函数

function my_callback_function() {

  

 echo 'hello world!';

}

call_user_func('my_callback_function');

  • 伪类型
    • $... 表示等等的意思。
  • 变量
    • 基础
      • 变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。
      • $this是一个特殊的变量,它不能被赋值。
      • 变量默认总是传值赋值。
      • 引用赋值:(同C++)

$foo = 'Bob';              // 将 'Bob' 赋给 $foo

$bar = &$foo;  

  • 预定义变量
    • 见预定义变量章节
  • 变量范围
    • 和C语言不同,PHP 中全局变量在函数中使用时必须申明为global。以下代码将不会产生任何输出:

<?php

$a = 1; /* global scope */

 

function Test()

{

    echo $a; /* reference to local scope variable */

}

 

Test();

?>

  • 声明全局变量例子:

<?php

$a = 1;

$b = 2;

 

function Sum()

{

    global $a, $b;

 

    $b = $a + $b;

}

 

Sum();

echo $b;

?>

  • 全局变量的使用还可以通过超全局变量数组$GLOBALS

<?php

$a = 1;

$b = 2;

 

function Sum()

{

    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];

}

 

Sum();

echo $b;

?>

 

  • 静态变量:仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。
  • 可变变量:

一个变量的变量名可以动态的设置和使用。

<?php

$a = "foo";

$$a = "this is foo";

echo $foo;

?>

  • 来自PHP外的变量
    • 有_GET、_POST等
  • 常量
    • 常量的范围是全局的。不应该在常量前面加上 $ 符号
    • 定义
      • 用define("FOO",     "something");定义。
      • 用const定义:const CONSTANT = 'Hello World';
    • 魔术常量
      • 多由他们所在代码位置决定。常用 的见下表:

名称

说明

__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 中该值总是小写字母的。

__METHOD__

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

__NAMESPACE__

当前命名空间的名称(大小写敏感)。这个常量是在编译时定义的(PHP 5.3.0 新增)

几个 PHP 的“魔术常量”

 

  • 表达式
    • 定义:任何有值的东西。
    • 和C语言一样,赋值,比较等表达式有值,支持 ++ += 和$first ? $second : $third
  • 运算符
    • 优先级:

运算符优先级

结合方向

运算符

附加信息

非结合

clone new

clone 和 new

[

array()

非结合

++ --

递增/递减运算符

非结合

~ - (int) (float) (string) (array) (object) (bool) @

类型

非结合

instanceof

类型

右结合

!

逻辑操作符

* / %

算术运算符

+ - .

算术运算符 和 字符串运算符

<< >>

位运算符

非结合

< <= > >= <>

比较运算符

非结合

== != === !==

比较运算符

&

位运算符 和 引用

^

位运算符

|

位运算符

&&

逻辑运算符

||

逻辑运算符

? :

三元运算符

= += -= *= /= .= %= &= |= ^= <<= >>=

赋值运算符

and

逻辑运算符

xor

逻辑运算符

or

逻辑运算符

,

多处用到

 

  • 算数运算符

例子

名称

结果

-$a

取反

$a 的负值。

$a + $b

加法

$a 和 $b 的和。

$a - $b

减法

$a 和 $b 的差。

$a * $b

乘法

$a 和 $b 的积。

$a / $b

除法

$a 除以 $b 的商。

$a % $b

取模

$a 除以 $b 的余数。$a<0时也<0

 

  • 位运算

例子

名称

结果

$a & $b

And(按位与)

将把 $a 和 $b 中都为 1 的位设为 1。

$a | $b

Or(按位或)

将把 $a 或者 $b 中为 1 的位设为 1。

$a ^ $b

Xor(按位异或)

将把 $a 和 $b 中不同的位设为 1。

~ $a

Not(按位非)

将 $a 中为 0 的位设为 1,反之亦然。

$a << $b

Shift left(左移)

将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。

$a >> $b

Shift right(右移)

将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

  • 比较运算符

例子

名称

结果

$a == $b

等于

TRUE,如果 $a 等于 $b。

$a === $b

全等

TRUE,如果 $a 等于 $b,并且它们的类型也相同。(PHP 4 引进)

$a != $b

不等

TRUE,如果 $a 不等于 $b。

$a <> $b

不等

TRUE,如果 $a 不等于 $b。

$a !== $b

非全等

TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进)

$a < $b

小与

TRUE,如果 $a 严格小于 $b。

$a > $b

大于

TRUE,如果 $a 严格 $b。

$a <= $b

小于等于

TRUE,如果 $a 小于或者等于 $b。

$a >= $b

大于等于

TRUE,如果 $a 大于或者等于 $b。

  • 错误控制运算符

@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。但是不能把它放在函数或类的定义 ,if 和 foreach 不能用。

  • 执行运算符

反引号`……`(数字1左边那个键),PHP 将尝试将反引号中的内容作为外壳命令来执行,h和shell_exec()一样。

<?php

$output = `ls -al`;

echo "<pre>$output</pre>";

?>

  • 自增自减运算符:同C
  • 逻辑运算符

例子

名称

结果

$a and $b

And(逻辑与)

TRUE,如果 $a 与 $b 都为 TRUE。

$a or $b

Or(逻辑或)

TRUE,如果 $a 或 $b 任一为 TRUE。

$a xor $b

Xor(逻辑异或)

TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。

! $a

Not(逻辑非)

TRUE,如果 $a 不为 TRUE。

$a && $b

And(逻辑与)

TRUE,如果 $a 与 $b 都为 TRUE。

$a || $b

Or(逻辑或)

TRUE,如果 $a 或 $b 任一为 TRUE。

 

  • 字符串运算符:.和.=
  • 数组运算符

例子

名称

结果

$a + $b

联合

$a 和 $b 的联合。把右边的数组元素(除去键值与左边的数组元素相同的那些元素)附加到左边的数组后面。

$a == $b

相等

如果 $a 和 $b 具有相同的键/值对则为 TRUE。

$a === $b

全等

如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。

$a != $b

不等

如果 $a 不等于 $b 则为 TRUE。

$a <> $b

不等

如果 $a 不等于 $b 则为 TRUE。

$a !== $b

不全等

如果 $a 不全等于 $b 则为 TRUE。

 

  • 类型运算符instanceof

用于确定一个 PHP 变量是否属于某一类 class 或接口 Interface的实例。

<?php

class MyClass

{

}

$a = new MyClass;//输出bool(true)

var_dump($a instanceof MyClass);

?>

  • 控制结构
    • If
      • If(expr){

}elseif{//就比C多了个elseif

}elseif{

}else{

}

  • 流程控制的替换结构:
    • 常用于和html交叉的时候,如果只有花括号,则看不清楚。规则是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;。

<?php if ($a == 5): ?>

A is equal to 5

<?php endif; ?>

  • while,do-while:同C
  • 一种奇葩的do-while写法,用于解决分支判断。

<?php

do {

    if ($i < 5) {

        echo "i is not big enough";

        break;

    }

    $i *= $factor;

    if ($i < $minimum_limit) {

        break;

    }

    echo "i is ok";

 

    /* process i */

 

} while(0);

?>

  • for:同C
  • foreach

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

  • 每次循环中,当前单元的值被赋给 $value,键名也会在每次循环中被赋给变量 $key
  • foreach 不支持用“@”来抑制错误信息的能力。
  • 修改数组值的方法:
    • 使用引用

foreach ($arr as &$value) {

    $value = $value * 2;

}

  • break,continue
    • break 可以接受一个可选的数字参数来决定跳出几重循环。
    • continue 接受一个可选的数字参数来决定跳过几重循环到循环结尾。
  • switch-case
    • 同C,但是可接受字符串做case的内容
  • require 和include
    • require 语句包含并运行指定文件。require 和 include 几乎完全一样,除了处理失败的方式不同之外。 include 产生一个Warning而 require 则导致一个 Fatal Error。
  • Require_once和include_once
    • 只包含一次
  • goto
  • 函数
    • PHP 中的所有函数和类都具有全局作用域,可以在内部定义外部调用,反之亦然。
    • PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数。
    • PHP 可以再函数中定义函数,但是里面的函数必须等到外面函数执行后才有定义

function foo()

{

  function bar()

  {

    echo "I don't exist until foo() is called.\n";

  }

}

  • PHP 支持可变数量的参数和默认参数。具体请参考: func_num_args(), func_get_arg(),以及 func_get_args()
  • 参数:
    • 一般是值传递,引用传递需加&。
    • 支持默认参数,默认值需为常数,任何默认参数必须放在任何非默认参数的右侧
  • 返回引用
    • 需在函数声明和使用时同时使用&符号

<?php

function &returns_reference()

{

    return $someref;

}

 

$newref =& returns_reference();

?>

 

  • 可变函数
    • 如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。

<?php

function foo() {

    echo "In foo()<br />\n";

}

$func = 'foo';

$func();        // This calls foo()

?>

  • 用function_exists检查这个函数是否存在,用call_user_func调用(和可变函数等价)
  • 匿名函数
    • (Anonymous functions),也叫闭包函数(closures)允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)的参数
    • 匿名函数目前是通过 Closure类来实现的。目前还不稳定,不适用于正式开发。
  • 类与对象
    • 基本概念
      • $this 是一个到调用对象的引用。
      • 声明实例

<?php

class SimpleClass

{

    // 成员声明

    public $var = 'a default value';

 

    // 方法声明

    public function displayVar() {

        echo $this->var;

    }

}

?>

  • 成员初始化应该用常量,不能用表达式,即使表达式是常量。
  • 对象复制默认采用引用的形式

<?php

$instance = new SimpleClass();

$assigned   =  $instance;

?>

assigned是instance的一个引用

 

  • 继承
    • 使用extends
    • 不能多继承
    • 可以通过 parent:: 来访问被覆盖的方法或成员。
  • 属性
    • 访问控制类型:public, protected, 和 private
    • 访问方式(有点像指针):$this->property(property是属性名字),不加$
    • 静态属性:self::$property,self指该类
    • nowdocs可以在声明时使用,可以初始化任何静态数据。heredocs不行。

public $var8 = <<<'EOD'

hello world

EOD;

正确

  • public $var2 = <<<EOD

hello world

EOD;

错误

  • 自动加载对象
    • 使用__autoload函数

<?php

function __autoload($class_name) {

    require_once $class_name . '.php';

}

 

$obj  = new MyClass1();

$obj2 = new MyClass2();

?>

在调用new时,自动加载其文件

  • 构造函数和析构函数
    • 子类构造函数、析构函数不会自动调用父类构造函数,若需调用需显示声明parent::__construct()parent::__destruct()
    • 尽量不要使用和类名相同的函数,防止和以前版本冲突
    • 析构函数即使在使用 exit()终止脚本运行时也会被调用。
  • 访问控制
    • 没有定义访问控制的,默认设置为 public。
  • 范围解析操作符(::)
    • 用于访问静态成员、方法和常量
    • self 和 parent 用于在类的内部对静态成员或方法进行访问
  • Static关键字
    • 不能通过一个对象来访问其中的静态成员(静态方法除外)
    • 伪变量$this在静态方法中不可用
    • 静态属性不可以由对象通过->操作符来访问。
  • 抽象类
    • 抽象类不能直接实例化
    • 子类必须重写所有的抽象方法

abstract class AbstractClass

{

 // 强制要求子类定义这些方法

    abstract protected function getValue();

    abstract protected function prefixValue($prefix);

 

    // 普通方法(非抽象方法)

    public function printOut() {

        print $this->getValue() . "\n";

    }

}

 

  • 接口
    • 用interface定义,用implements实现。
    • 一个接口可以继承另一个接口,用extends继承,继承则不用实现。
    • 接口都是public
    • 例:

interface a

{

    public function foo();

}

 

interface b extends a

{

    public function baz(Baz $baz);

}

 

// 正确写法

class c implements b

{

    public function foo()

    {

    }

 

    public function baz(Baz $baz)

    {

    }

}

  • traits
    • 用于解决无法多重继承的问题
    • 使用关键字traits声明一个traits,在子类里用use关键字引入(可加入多个)。覆盖的优先级是:子类覆盖traits覆盖父类。
    • 若多个traits之间有冲突,通过insteadof和as来消解冲突。as还可改变可见性

<?php

trait A {

    public function smallTalk() {

        echo 'a';

    }

    public function bigTalk() {

        echo 'A';

    }

}

 

trait B {

    public function smallTalk() {

        echo 'b';

    }

    public function bigTalk() {

        echo 'B';

    }

}

 

class Talker {

    use A, B {

        B::smallTalk insteadof A;

        A::bigTalk insteadof B;

    }

}

 

class Aliased_Talker {

    use A, B {

        B::smallTalk insteadof A;

        A::bigTalk insteadof B;

        B::bigTalk as talk;

    }

}

?>

  • 重载
    • 和C++完全不一样
    • 重载指调用一个不存在的对象或方法时,将调用指定的魔法函数。
    • 属性重载

public void __set ( string $name , mixed $value )

public mixed __get ( string $name )

public bool __isset ( string $name )

public void __unset ( string $name )

在给未定义的变量赋值时,__set() 会被调用。

读取未定义的变量的值时,__get() 会被调用。

当对未定义的变量调用 isset() 或 empty()时,__isset() 会被调用。

当对未定义的变量调用 unset()时,__unset() 会被调用。

参数$name是指要操作的变量名称。__set() 方法的$value 参数指定了$name变量的值。

  • 方法重载

public mixed __call ( string $name , array $arguments )

public static mixed __callStatic ( string $name , array $arguments )

当调用一个不可访问方法(如未定义,或者不可见)时,__call() 会被调用。

当在静态方法中调用一个不可访问方法(如未定义,或者不可见)时,__callStatic() 会被调用。

$name 参数是要调用的方法名称。$arguments 参数是一个数组,包含着要传递给方法$name 的参数。

  • 对象迭代
    • 就像使用数组那样,可以通过foreach 来遍历对象中的属性。
    • 可以继承系统预定义的接口Iterator,然后重写里面的方法,可自定义迭代的方式。
  • 两个PHP常用的设计模式
    • 工厂模式:
      • 工厂模式(Factory)允许你在代码执行时实例化对象。它之所以被称为工厂模式是因为它负责“生产”对象。工厂方法的参数是 你要生成的对象对应的类名称。

<?php

class Example

{

    // The parameterized factory method

    public static function factory($type)

    {

        if (include_once 'Drivers/' . $type . '.php') {

            $classname = 'Driver_' . $type;

            return new $classname;

        } else {

            throw new Exception ('Driver not found');

        }

    }

}

// Load a MySQL Driver

$mysql = Example::factory('MySQL');

 

// Load a SQLite Driver

$sqlite = Example::factory('SQLite');

 

?>

  • 单例模式
    • 单例模式(Singleton)用于为一个类生成一个唯一的对象。最常用的地方是数据库连接。 使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。
    • 通过将构造函数声明成private,禁止生成,重载__clone()方法。
    • 注意PHP5的对象使用引用复制的方式

<?php

class Example

{

    // 保存类实例在此属性中

    private static $instance;

   

       // 构造方法声明为private,防止直接创建对象

    private function __construct()

    {

        echo 'I am constructed';

    }

 

    // singleton 方法

    public static function singleton()

    {

        if (!isset(self::$instance)) {

            $c = __CLASS__;

            self::$instance = new $c;

        }

 

        return self::$instance;

    }

   

    // Example类中的普通方法

    public function bark()

    {

        echo 'Woof!';

    }

 

    // 阻止用户复制对象实例

    public function __clone()

    {

        trigger_error('Clone is not allowed.', E_USER_ERROR);

    }

 

}

 

?>

<?php

 

// 这个写法会出错,因为构造方法被声明为private

$test = new Example;

 

// 下面将得到Example类的单例对象

$test = Example::singleton();

$test->bark();

 

// 复制对象将导致一个E_USER_ERROR.

$test_clone = clone $test;

 

?>

  • 魔术方法
    • 在类或对象完成一些操作时,会调用魔术方法,如构造和析构就是通过重载的魔术方法来实现。见上面重载小节。
  • final关键字
    • 如果父类中的方法被声明为final,则子类无法覆盖该方法; 如果一个类被声明为final,则不能被继承。
  • 复制对象
    • 因为一般对象复制都是引用复制的形式,因此,想要完全复制,需使用clone关键字
    • $copy_of_object = clone $object;
    • 魔术方法__clone():当复制完成时, 如果定义了__clone()方法, 则新创建的对象(复制生成的对象)中的__clone()方法会被调用
  • 对象比较
    • ==:如果两个对象的属性和属性值 都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。
    • ===:必须指向同一实例
  • 指定函数参数类型
    • 在PHP中,可以通过在函数参数上加类型来强制指定参数类型。
  • 后期静态绑定
    • static::不再被解析为定义当前方法所在的类,而是在实际运行时计算的。
  • 对象序列化
    • 使用函数 serialize()来返回一个包含字节流的字符串来表示。
  • 命名空间
    • 定义命名空间
      • 用namespace关键字来定义,必须放在所有其他代码之前
      • 命名空间可以拆开放在多个文件里面。
    • 子命名空间
      • 命名空间可以分层定义namespace MyProject\Sub\Level;表示是某个命名空间的子命名空间。
    • 在一个文件中定义多个命名空间

<?php

namespace MyProject {

const CONNECT_OK = 1;

class Connection { /* ... */ }

function connect() { /* ... */  }

}

namespace { // global code

session_start();

$a = MyProject\connect();

echo MyProject\Connection::start();

}

?>

建议最好用大括号括起来。

  • 使用方式
    • \Foo\Bar\foo::staticmethod();像文件路径一样。
    • 在命名空间内部访问全局类、函数和常量$b = \INI_ALL; // 访问全局常量 INI_ALL
  • 魔法常量__NAMESPACE__
    • 包含当前命名空间名称的字符串。
  • namespace关键字
    •  可用来显式访问当前命名空间或子命名空间中的元素。

namespace MyProject;

namespace\blah\mine(); // calls function MyProject\blah\mine()

  • 使用别名导入
    • 使用use  as
    • use My\Full\Classname as Another
  • 全局空间
    • 名称前加上前缀 \ 表示该名称是全局空间中的名称
    • $b = new \Exception('hi'); // $b 是类 Exception 的一个对象
  • 异常处理
    • 同C++
    • class MyException extends Exception继承异常处理
  • Generator
    • 一个函数,使用 yield返回一个generate

<?php

function gen_one_to_three() {

    for ($i = 1; $i <= 3; $i++) {

        // Note that $i is preserved between yields.

        yield $i;

    }

}

 

$generator = gen_one_to_three();

foreach ($generator as $value) {

    echo "$value\n";

}

?>

每次调用哪个generater都会返回一个值

  • generator只能向前不能向后
  • 引用
    • 同C++
    • 返回引用时 return不要加括号!否则是返回一个表达式的值
    • 取消引用unset()
  • 预定义变量

超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量

$GLOBALS — 引用全局作用域中可用的全部变量

$_SERVER — 服务器和执行环境信息

$_GET — HTTP GET 变量

$_POST — HTTP POST 变量

$_FILES — HTTP 文件上传变量

$_REQUEST — HTTP Request 变量

$_SESSION — Session 变量

$_ENV — 环境变量

$_COOKIE — HTTP Cookies

$php_errormsg — 前一个错误信息

$HTTP_RAW_POST_DATA — 原生POST数据

$http_response_header — HTTP 响应头

$argc — 传递给脚本的参数数目

$argv — 传递给脚本的参数数组

  • 超全局变量
    • 在任何地方都可以使用,包括

$GLOBALS

$_SERVER

$_GET

$_POST

$_FILES

$_COOKIE

$_SESSION

$_REQUEST

$_ENV

转载于:https://www.cnblogs.com/maplewizard/archive/2013/03/03/2942113.html

评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页