1.PHP常用语法参考一览表

1.PHP标记

PHP 脚本以 <?php 开头,以 ?> 结尾:

<?php........?>

2.分号

分号的作用是用来分隔语句的。

<?php 
  echo "<p>Order processed at ".date('H:i, jS F Y')."</p>"; 
?>

3.注释

// 这是单行注释

# 这也是单行注释

/*
这是多行注释块
它横跨了
多行
*/

4.标识符

  • 任意长度,有任何字母、数字、下划线组成;
  • 不能以数字开头;
  • 区分大小写,函数名称例外;

5.数据类型

  • Integer(整数):表示整数;
  • Float(浮点数,也叫Double,双精度):表示实数;
  • String(字符串):表示字符串;
  • Boolean(布尔):表示true或者flase;
  • Array(数组):保存相同类型的多个数据;
  • Object(对象):保存类的实例
  • 三个特殊的类型:NULL(空)、resource(资源)、callable

6.变量

变量用美元符$后跟标识符来表示。

$a = 1;

6.1Global关键字

函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。如果函数内部需要使用,需使用global关键字调用。

<?php
$x=5;
$y=10;

function myTest() {
  global $x,$y;
  $y=$x+$y;
}

myTest();
echo $y; // 输出 15
?>

6.2LOCAL关键字

函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。

6.3static关键字

通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。

要完成这一点,请在您首次声明变量时使用 static 关键词:

<?php

function myTest() {
  static $x=0;
  echo $x;
  $x++;
}

myTest();
myTest();
myTest();

?>

注意:该变量仍然是函数的局部变量。

7.常量

常量名称与变量的区别就是前面没有 $ 符号,常量的作用域是全局的,它们可以在函数内外使用。

请使用 define() 函数 – 它使用三个参数:

  1. 首个参数定义常量的名称
  2. 第二个参数定义常量的值
  3. 可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。
define('TIREPRICE',100);

8.内置超级全局变量

内置超级全局变量的作用域是PHP脚本的任何地方。完整列表如下:

  • $GLOBALS,所有全局变量数组;
  • $_SERVER,服务器环境变量数组;
  • $_GET,通过GET方式传递的变量数组;
  • $_POST,通过POST方式传递的变量数组;
  • $_COOKIE,cookie变量数组;
  • $_FILES,与文件有关的变量数组;
  • $_ENV,环境变量数组;
  • $_REQUEST,所有用户输入的变量数组;
  • $_SESSION,会话变量数组。

9.魔术常量

名称说明
__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 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。
__TRAIT__Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
__METHOD__类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

10.数组

10.1索引数组

索引是自动分配的(索引从 0 开始):

$cars=array("porsche","BMW","Volvo");

10.2关联数组

关联数组是使用您分配给数组的指定键的数组。

$age=array("Bill"=>"35","Steve"=>"37","Elon"=>"43");

10.3多维数组

多维数组指的是包含一个或多个数组的数组。

$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

11.操作符

11.1算术操作符

运算符名称例子结果
+加法$x + $y$x 与 $y 求和
减法$x – $y$x 与 $y 的差数
*乘法$x * $y$x 与 $y 的乘积
/除法$x / $y$x 与 $y 的商数
%取余$x % $y$x 除 $y 的余数

11.2字符串操作符

运算符名称例子结果
.串接$txt1 = “Hello” $txt2 = $txt1 . ” world!”现在 $txt2 包含 “Hello world!”
.=串接赋值$txt1 = “Hello” $txt1 .= ” world!”现在 $txt1 包含 “Hello world!”

11.3赋值操作符

赋值等同于描述
x = yx = y右侧表达式为左侧运算数设置值。
x += yx = x + y
x -= yx = x – y
x *= yx = x * y
x /= yx = x / y
x %= yx = x % y余数

11.4比较操作符

运算符名称例子结果
==等于$x == $y如果 $x 等于 $y,则返回 true。
===全等(完全相同)$x === $y如果 $x 等于 $y,且它们类型相同,则返回 true。
!=不等于$x != $y如果 $x 不等于 $y,则返回 true。
<>不等于$x <> $y如果 $x 不等于 $y,则返回 true。
!==不全等(完全不同)$x !== $y如果 $x 不等于 $y,或它们类型不相同,则返回 true。
>大于$x > $y如果 $x 大于 $y,则返回 true。
<小于$x < $y如果 $x 小于 $y,则返回 true。
>=大于或等于$x >= $y如果 $x 大于或者等于 $y,则返回 true.
<=小于或等于$x <= $y如果 $x 小于或者等于 $y,则返回 true。

11.5逻辑操作符

运算符名称例子结果
and$x and $y如果 $x 和 $y 都为 true,则返回 true。
or$x or $y如果 $x 和 $y 至少有一个为 true,则返回 true。
xor异或$x xor $y如果 $x 和 $y 有且仅有一个为 true,则返回 true。
&&$x && $y如果 $x 和 $y 都为 true,则返回 true。
||$x || $y如果 $x 和 $y 至少有一个为 true,则返回 true。
!!$x如果 $x 不为 true,则返回 true。

11.6递增/递减操作符

运算符名称描述
++$x前递增$x 加一递增,然后返回 $x
$x++后递增返回 $x,然后 $x 加一递增
–$x前递减$x 减一递减,然后返回 $x
$x–后递减返回 $x,然后 $x 减一递减

11.7数组操作符

运算符名称例子结果
+联合$x + $y$x 和 $y 的联合(但不覆盖重复的键)
==相等$x == $y如果 $x 和 $y 拥有相同的键/值对,则返回 true。
===全等$x === $y如果 $x 和 $y 拥有相同的键/值对,且顺序相同类型相同,则返回 true。
!=不相等$x != $y如果 $x 不等于 $y,则返回 true。
<>不相等$x <> $y如果 $x 不等于 $y,则返回 true。
!==不全等$x !== $y如果 $x 与 $y 完全不同,则返回 true。

11.8类型操作符

instanceof操作符允许检查一个对象是否为特定类的实例。

class sampleClass{};
$myObject = new sampleClass();
if ($myObject instanceof sampleClass)
  echo "myObject is an instance of sampleClass";

12.条件语句

  • if 语句 – 如果指定条件为真,则执行代码
  • if…else 语句 – 如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码
  • if…elseif….else 语句 – 根据两个以上的条件执行不同的代码块
  • switch 语句 – 选择多个代码块之一来执行

13.循环语句

  • while – 只要指定条件为真,则循环代码块
  • do…while – 先执行一次代码块,然后只要指定条件为真则重复循环
  • for – 循环代码块指定次数
  • foreach – 遍历数组中的每个元素并循环代码块

14.函数

函数声明以单词 “function” 开头:

function functionName() {
  被执行的代码;
}

注意:函数名对大小写不敏感。

可以通过参数向函数传递信息。参数类似变量。

参数被定义在函数名之后,括号内部。您可以添加任意多参数,只要用逗号隔开即可。

下面的例子中的函数有一个参数($fname)。当调用 familyName() 函数时,我们同时要传递一个名字(例如 Bill),这样会输出不同的名字,但是姓氏相同:

<?php
function familyName($fname) {
  echo "$fname Zhang.<br>";
}

familyName("Li");
familyName("Hong");
familyName("Tao");
familyName("Xiao Mei");
familyName("Jian");
?>

15.类和对象

15.1类

每个类的定义都以关键字 class 开头,后面跟着类名,后面跟着一对花括号,里面包含有类的属性与方法的定义。

一个类可以包含有属于自己的常量,变量(称为“属性”)以及函数(称为“方法”)

<?php
class SimpleClass
{
    // 声明属性
    public $var = 'a default value';

    // 声明方法
    public function displayVar() {
        echo $this->var;
    }
}
?>

15.2对象

要创建一个类的实例,必须使用 new 关键字。

<?php
$instance = new SimpleClass();
?>

15.3继承

一个类可以在声明中用 extends 关键字继承另一个类的方法和属性。PHP不支持多重继承,一个类只能继承一个基类。

被继承的方法和属性可以通过用同样的名字重新声明被覆盖。但是如果父类定义方法时使用了 final,则该方法不可被覆盖。可以通过 parent:: 来访问被覆盖的方法或属性。

<?php
class ExtendClass extends SimpleClass
{
    // Redefine the parent method
    function displayVar()
    {
        echo "Extending class\n";
        parent::displayVar();
    }
}

$extended = new ExtendClass();
$extended->displayVar();
?>

15.4访问控制

对属性或方法的访问控制(PHP 7.1.0 以后支持常量),是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。

具体参见:PHP中属性和方法的访问控制

16.命名空间

在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:

  1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

虽然任意合法的PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响,它们是:类(包括抽象类和traits)、接口、函数和常量。

命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间,除了一个以外:declare关键字。

<?php
namespace MyProject;

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }

?>

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/basic/php/2259.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注