PHP的语言标识
PHP是一种嵌入式脚本语言,以标识符表示PHP代码的所谓“短风格”表示方式
<? echo "这是一个演示。"?>
- 正常情况下不推荐这种表示方式,而且在php.ini文件中,short_open_tags设置是默认关闭的
- ASP风格
- 照顾ASP使用者对PHP的使用,提供的表示风格
<% //PHP代码 %>
PHP的编码规范
什么是编码规范
- 规定了某种语言的一系列默认编程风格,用来增强这种语言的可读性、规范性和可维护性。主要包括文件组织、缩进、注释、声明、空格处理、命名规范等
基本的编码规范
- 表述
- 每个语句以“;”结尾
- 注释
- 支持C,C++,Java语言风格注释方式,注释不能嵌套
- 支持Shell风格
- #这是Shell风格的注释内容
- 一句注释占用一行
- 空白
- PHP对空格、回车造成的新航、Tab等留下的空白都遵循编码规范进行忽略;可以合理地运用空白符,增强代码的清晰性和可读性
- 指令分隔符
- 每个语句用分号结束命令,但是一段代码段的最后一行可以不用分号结束
- 与HTML语言混合搭配
- PHP解析器仅解析PHP开始和结束标记之间的内容,所以PHP文件中可以在标记之外的地方混搭内容。同时也可以使PHP嵌入到HTML文档中去。
常量
声明和使用常量
- define (“常量名”,常量值,mixed value);
- 常量名是一个字符串,往往使用大写的英文字母表示。常量值也可以是表达式。mixed value为可选参数,true为表示常量的名字支持区分大小写,false反之
- 常量可以是很多种数据类型,像变量一样存储数值,但是无法改变,且具有全局性,函数内外都可以访问
使用系统预定义常量
- PHP预定了很多系统内置常量,可以被随时调用
- 常见的内置常量
_FILE_
:PHP程序文件名_LINE_
:PHP程序行数PHP_VERSION
:PHP程序的版本PHP_OS
:执行PHP解析器的操作系统名称,如LinuxTRUE
:真值FALSE
:伪值E_ERROR
:最近的错误处E_WARNING
:最近的警告处E_RARSE
:解析语法有潜在问题处E_NOTICE
:发生异常(但不一定是错误)处
变量
PHP中的变量声明
- 与Java和C语言不同,PHP的变量是弱类型的,在PHP中不需要对每一个变量声明类型
- PHP中的变量名一般以$作为前缀,然后以字母的大小或者下划线“_”作为开头
- PHP的赋值有两种,包括传值和引用,它们的区别如下
- 传值赋值:使用“=”直接将赋值表达式的值赋给另一个变量
- 引用赋值:将赋值表达式内存的空间的引用赋值给另一个变量。需要在“=”左右变量前面加上一个“&”符号
可变变量和变量的引用
- 可变变量允许改变一个变量的变量名,允许使用一个变量的值作为另外一个变量的名
- 变量引用相当于给变量添加了一个别名,用&来引用变量,其实两个变量名指的都是同一个变量
变量作用域
- 6种基本变量作用域法则
- 内置超全局变量:代码中任意位置都可以访问
- 常数:一旦声明,它就是全局性的,可以在函数内外使用
- 全局变量:在代码中声明,在代码中访问,但是不可以在函数内访问
- 在函数中声明为全局变量的变量:就是同名的全局变量
- 在函数中创建和声明为静态变量的变量:在函数是无法访问的,但是这个静态变量的值是可以保留的
- 在函数中创建和声明的局部变量:在函数外无法访问,并且在本函数终止时终止并退出
- 超全局变量(Superglobal或者Autoglobal)
- 不管在程序的任何地方,也不管是函数内还是函数外,都可以访问。而这些超全局变量就是由PHP预先定义好以方便使用的
- 介绍
- $GLOBALS:包含全局变量的数组
- $_GET:包含所有通过GET方法传递给代码的变量的数组
- $_POST:包含所有通过POST方法传递给代码的变量的数组
- $_FILES:包含文件上传变量的数组
- $_COOKIE:包含cookie变量的数组
- $_SERVER:包含服务器环境变量的数组
- $_ENV:包含环境变量的数组
- $_REQUEST:包含用户所有输入内容的数组
- $_SESSION:包含会话变量的数组
- 全局变量
- 在函数外声明的变量,在代码中都可以访问。但是在函数内不可以访问,因为函数默认不能访问外部的全局变量
- 如果想让函数访问某个全局变量,可以在函数中通过global关键字声明
- 还可以通过超全局变量的$GLOBALS数组进行访问
$aa='我是一个全局变量'; function showss(){ $aa=$GLOBALS['aa']; }
- 静态变量
- 静态变量只在函数内存在,函数外无法访问,又static修饰。但是执行后,其值保留
变量的销毁
- 当用户创建一个变量时,相应地在内存中有一个空间专门用于存储该变量,该空间引用计数+1。当变量与该空间的联系断开时,则引用计数-1。如果引用计数为0时,则成为垃圾
- PHP有自动回收垃圾的机制,也可手动销毁变量,使用unset()函数实现:void unset(变量名)。此函数只销毁局部变量,不销毁全局变量
变量的类型
在PHP中,给变量赋值什么类型的值,这个变量就是什么类型
整型
浮点型
布尔型
字符串型
数组型
- 使用list()或者array()函数来创建数组,也可以直接进行赋值
- 使用=>为数组赋值,下标从0开始
对象型
- 类的实例,对象型变量也属于资源型变量
NULL型
- 标记一个变量为空,但是一个空字符串和一个NULL是不同的,NULL型在布尔判断时永远为false
资源类型
- 一种十分特殊的数据类型,表示了PHP的扩展资源,可以使一个打开的文件,也可是是一个数据库连接,甚至可以是其它数据类型
数据类型之间的相互转换
- 自动数据类型转换
- 强制数据类型转换
- 采用setType()函数
Bool setType(var,string type)
- 采用setType()函数
声明标量类型和函数返回值类型(PHP7)
标量类型声明
- 两种模式
- 强制模式(默认)
- 严格模式
- 语法格式
- declare(strict_types=1)
- strict_types为1时则严格类型强制校验模式,作用域函数调用和返回语句;0表示弱类型校验模式
函数返回值类型
- 可以声明函数返回值的类型,包括int,float,bool,string,interfaces,array和callable
运算符
算数运算符
- 与Java相同
字符串连接运算符
- .
- 把两个字符串连接起来,变成一个字符串,如果变量是整型或者浮点型,也会变成字符串输出
赋值运算符
比较运算符
- ===:精确等于(类型)
- !==:不精确等于
逻辑运算符
- &&和AND
- ||和OR
- !和NOT
- XOR:逻辑异或
按位运算符
- &
- |
- ^
否定控制运算符
- !:逻辑非
- ~:按位非
错误控制运算符
- @:在一个操作数之前使用,用来屏蔽错误信息的生存
三元运算符
- ?: :同Java
合并运算符和组合运算符(PHP7)
- ??:合并运算符用于判断变量是否存在且值不为NULL,如果是,则返回自身的值,否则返回它的第二个操作数
格式:(expr1) ?? (expr2) - <=>:用于比较两个表达式e1和e2,如果e1小于、等于或大于e2时,它分别返回-1、0或1