1. 常量
常量是单个值的标识符(名称)。在脚本中无法改变该值。有效的常量名以字符 或下划线开头(常量名称前面没有 $ 符号)
如需设置常量,请使用 define() 函数 - 它使用三个参数:
1.首个参数定义常量的名称;
2.第二个参数定义常量的值;
3.可选的第三个参数规定常量名是否对大小写敏感。默认是 false。
2. 变量
1.变量以 $ 符号开头,其后是变量的名称;
3. 变量的作用域
局部变量:即在函数内部定义的变量,其作用域是所在函数。
全局变量:即被定义在所有函数以外的变量,其作用域是整个PHP文件,但是在用户自定义函数内部是不可用的。想在用户自定义函数内部使用全局变量,要使用global关键字声明。
静态变量:能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值。而一般变量是在函数调用结束后,其存储的数据值将被清除,所占的内存空间被释放。使用静态变量时,先要用static来声明变量。需要把关键字static 放在要定义的变量之前
可变变量:可变变量是一种独特的变量,它允许动态改变一个变量名称。工作原理是该变量的名称由另外一个变量的值来确定。实现过程是在变量的前面再多加一个”$“。
4. 基本数据类型
PHP 支持8种基本的数据类型:
四种标量类型:boolean(布尔型)、integer(整型)、float (浮点型, 也称作 double)、string (字符串);
两种复合类型:array (数组)、object(对象);
最后是两种特殊类型:resource(资源)、NULL(NULL)。
整数:整数是没有小数的数字。
浮点数:浮点数是有小数点或指数形式的数字。
布尔型:布尔型是最简单的变量,布尔变量:true和false值。
当转换为布尔型时,以下值被认为是false:
(1)布尔值false;
(2)整型值0(零);
(3)浮点型值0.0(零);
(4)空白字符串和字符串”0”;
(5)没有成员变量的数组;
(6)没有单元的对象(仅适用php4);
(7)特殊类型NULL;
而所有其他值都被认为是TRUE包括任何资源。
字符串
单引号方式:可以使用一对单引号来声明一个字符串,如果需要在字符串中包含单引号,可以使用 转义符\:
双引号方式:也可以使用一对双引号来声明一个字符串。类似的,如果要在其中包含双引号, 使用转义符\:
HereDoc方式:通常在PHP代码中,你会需要将变量和预定的模板拼接起来,构成返回前端的HTML字符串。 Perl风格的HereDoc方式最适合这种应用场景。
开始标识符总是以<<<开始,然后加上一个自定义的TOKEN,比如,我们使用EOT*, 你也可以使用SCREWYOU, HAHAHA… 总之只要不在内容中出现就行。
结束标识符必须独占一行,顶格写上之前我们自定义的TOKEN,并且总是以*;*结尾。
HereDoc方式支持在内容中使用变量,嗯,自带模板插值功能:
转义字符:当我们想输出“$”、“””、“’”等字符时,这些特殊的字符都要通过转义符“\ ”来显示。常用的转义字符如下表:
resource:
资源又叫做“句柄”,是由编程人员来分配的,处理外部事务的函数。
资源是由专门的函数来建立和使用。它是一种特殊的数据类型,并由程序员分配。在使用资源时,要及时地释放不需要的资源。如果程序员忘记释放资源,系统自动启用垃圾回收机制,避免内存消耗殆尽。
在PHP中,资源类型保存了到外部资源的一个引用,实质其实就是为外部资源建立的特殊句柄,比如数据库连接、打开文件、图形画布区域等。资源类型其实仅仅是一个整数,而内核可以根据这个整数值去一个类似资源池的地方寻找最终需要的数据。
NULL 值:
特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值。NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。可以通过把值设置为 NULL,将变量清空:
5. 字符串运算符
字符串运算符只有一个,即英文的句号“.”。它将两个字符串连接起来。
当使用”+“时,PHP会认为这是一次运算。如果”+“号的两边有字符类型,则自动转换为整型,如果是字母,则输出为0,如果是以数字开头的字符串,则会截取字符串头部的数字,再进行运算。
@错误屏蔽:错误屏蔽运算符可以对程序中出现错误的表达式进行操作,进而对错误信息进行屏蔽,其使用的方法就是在错误的表达式前加上“@”即可。它只是对错误信息进行屏蔽,并没有解决错误。
6. 表达式
在PHP的代码中,使用分号(;)来区分表达式,表达式也可以包含在括号内。可以这样理解,一个表达式再加上一个分号,就是一条PHP语句。
7. 定义和调用函数
函数值传递:在调用函数时,需要向函数传递参数,被传入的参数称为实参数,而函数定义的参数称为形参。参数传递的方式有按值传递与按引用传递。我们先介绍按值传递。
值传递就是将实参的值复制到对应的形参中,在函数内部的操作针对形参进行,操作的结果不会影响到实参,即函数返回后,实参的值不会改变。
引用传递:实参的内存地址传递到形参中,在函数内部的所有操作都会影响到实参的值,即返回后,实参的值会发生变化。传值时只需要在函数声明时的参数前加“&”即可。
8. 字符串函数
strlen 获取字符串的长度
strtoupper与ucwords *strtoupper()将指定的字符全部转换为大写;strtolower()将北定的字符都转换成小写;ucwords()将指定字符串中每个单词的首字母都转成大写;ucfirst()*函数将指定字符串的首字母转换为大写。其语法结构都是一样的,在括号中填入指定的字符串即可。
substr 函数从指定的字符串中按照指定的位置截取一定长度的字符。语法格式为:
注:字符串的索引是从0开始的。
strstr() 和 strrchr()
*strstr()*函数获取指定字符串(A)在另一个字符串(B)中首次出现的位置到后者末尾的子字符串,区分字母大小写。语法格式如下:
strrchr()函数获取字符串(A)在另一个字符串(B)中最后一次出现的位置,区分字母大小写。语法格式与strstr相同。
- str_ireplace()
函数将指定字符串替换为另外一个指定的字符串
9. 数组
PHP提供了两种索引下标,分别为数值索引和关联索引。数值索引由数字组成,下标从0开始,数值索引一般表示数组元素在数组中的位置。与数值索引不同,关联索引一般表示索引与该索引对应的数组元素的关系。
PHP中声明数组的方式主要有两种,第一种是应用array()函数声明数组,第二种是通过直接为数组元素赋值的方式声明数组。array()函数的声明格式如下:
应用array()函数声明数组时,数组下标既可以是数值索引也可以是关联索引。下标与数组元素值之间用”=>“进行连接,不同数组元素之间用逗号进行分隔。当然我们也可以用简单的定义方式:
数组直接赋值
- print_r()
对PHP中的数组元素进行输出可以通过输出语句来实现,如echo,print语句等,但这种输出方式只能对某数组中的某一元素进行输出。而通过print_r()函数可以将数组结构进行输出。 - foreach 主要用于处理数组,是遍历数组的一种简单方法,语法格式为:
- array_key_exists 用于判断某键值是否为该函数所指定的数组的键值,如果是则返回True,否则返回False。其语法格式为:
- count()用于返回指定数组中元素的个数。语法格式为:
- sort()与rsort() sort()用于对指定的数组进行升序排序;rsort用于对指定数组进行降序排序。
10. 面向对象
面向对象的编程方式具有继承、封装和多态性等特点。 - 继承 通过继承可以创建子类和父类之间的层次关系,子类可以从其父类中继承属性和方法,通过这种关系模型可以简化类的操作,假如已经定义了A类,接下来准备定B类,而B类中有很多属性和方法与A类相同,那么就可以通过关键字extends实现B类继承A类,这样就无需再在B类中定义A类已具有的属性和方法,从而可以在很大程度数上提高程序的开发效率。
- 封装 类是属性和方法的集合,为了实现某项功能而定义类后,开发人员并不需要了解类体内每句代码的具体含义,只需通过对象来调用类内某个属性或方法即可实现某项功能,这就是类的封装性
- 多态 类的多态性指不同的类进行同一操作可以有不同的行为。
11.类
- 类的结构及声明方式 创建一个PHP类时,必须使用关键字class进行声明,该关键字后紧跟类的名称,之后用大括号将类体进行封装,类的基本声明格式如下;创建完成类的基本结构后就可以编写类体。类体中主要包括属性和方法的声明及定义,当然也可能在类体中只定义属性或只定义方法,甚至类体内可以不定义任何属性。
属性:类的属性实质为在类体内定义的变量,用于保存或设置参数。
方法: 类的方法实质为在类体内定义的函数,用于实现某项功能,其定义方法与普通函数定义方法相同,同时可以应用访问权限关键字对方法访问权限进行限制。- 构造函数 对类体进行初始化主要有两种方法。第一种方法是在类体中定义一个专门的用于对类体进行初始化的方法。第二种方法是应用构造函数实现类体的初始化。 通过构造函数来初始化。PHP中构造函数统一的命名为__construct(),作用就是对类体进行初始化,并可在实例化对象时为构造函数指定参数。
- 析构函数 与构造函数对应的是析构函数。析构函数在销毁类之前执行,并统一命名__destruct(),其作用是在类被销毁前自动完成某项功能。
- 类的实例化 一般情况下,创建一个类后并不能直接的对属性和方法进行引用,必须对类进行实例化,即创建一个对象。PHP中用new 关键字创建对象。
- 访问权限 访问修饰符主要包括public、private和protect这3种,当然如果不加任何修饰符对类体中的属性或方法进行修饰,则默认为public。
12. 继承
PHP中用关键字extends指明继承关系。例如,已经定义了类A,如果让类B继承A,可以用下面的方式定义类B。
这样B类就可以继承类A的公有和受保护的成员。但类的继承是单向的,子类可以从父类中继承特征,但父类却不能从子类中继承,也就是说,类A不能继承类B的成员。
PHP自身并不支持多继承,也就是说一个子类只能有一个父类,一个父类可以有多个子类。13. 重载
如果在父类中已经定义了某属性或方法,然后在子类中定义与父类同名的属性和方法也是合法的,这就是类的重载。利用重载可以重写父类中指定方法所实现的功能。(final。并不是任何时候都可以实现继承的重载的,利用final关键字修饰的方法不能被重载,同样使用该关键字修饰的类也不能被继承。)
14. 接口
接口可以看作是多继承的解决方案,其主要思想是指定一个实现了该接口的类,而在该类中必须实现接口中所有的方法。
PHP中接口是用关键字interface进行声明15 .域运算符
在PHP中“::”这个叫范围解析操作符,又名域运算符。“::”符号可以认为是与C语言中的“.”相似的,而它更像C++中(Perl)的::类范围操作符。
在没有声明任何实例的情况下访问类中的函数或者基类中的函数和变量很有用处。而:: 运算符即用于此情况。16. 对象克隆
对类进行实例化后,就可以通过实例化后的对象调用类中的成员,如果要求两个对象具有相同的特征,可以再对类进行实例化来生成一个新对象,PHP 提供了关键字 clone,应用该关键字即可实现对象的克隆,
17. this
this关键字为指向当前对象的指针,可以用该关键字调用当前类体中的属性和方法。
18. parent
parent关键字是指向父类的指针,主要用于调用父类的构造函数。如下代码,首先定义test类作为父类,并在该类中定义构造函数_construct(),然后定义test2并继承test,同时在test2类体中定义该子类的构造函数,并在该构造函数中用parent来实现父类的初始化。
19. self
self关键字是指向类的本身,也就是说该关键字并不指向任何已实例化的对。由于类只能直接引用类体中的静态成员,而关键字又指向类本身,所以self关键字经常用于在类体中调用类的静态成员,调用方法为self关键字加域运算符再加静态成员名。静态变量一般用static 修饰。
20. include()
使用include()语句包含外部文件时,只有代码执行到include()函数时才将外部文件包含进来,当所包含的外部文件发生错误时,系统只会给出一个警告,而整个PHP文件则继续向下执行。
21.r eqiure()
require()语句与include()语句类似,都是实现对外部文件的调用。当使用require()语句时载入文件时,它会作为PHP文件的一部分被载入。如果通过require()语句载入一个HTML文件,如”hello.html”,文件内的任何PHP命令都会被处理。
require 和 include 几乎完全一样,除了处理失败的方式不同之外。require 在出错时产生 (E_COMPILE_ERROR) 级别的错误。22.include_once()
include_once()函数是include()函数的延伸,它的作用和include()函数几乎是相同的,唯一的区别在include_once()函数会在导入文件前先检测该文件是否在该页面的其它部分被导入过,如果有的话就不会重复导入该文件。
23. require_once()
require_once()语句是require()语句的延伸,它的功能与require类似,不同的是require_once()语句会先检查要导入的文件是不是已经在该程序中的其它地方被调用过,如果有的话就不会再次重复调用该文件。语法与require()相同。
24. date
通过date函数可以获取按照指定格式输出的日期和时间信息,如果省略参数,会自动获取本地的当前时间。
参数format为显示格式,参数timestamp为时间戳,是可选择的,默认为time(),即如果没有给出时间戳则使用本地当前时间。format格式参数在这里简单介绍几个:”Y”四位数字完整表示年份,”y”两位数字表示年份,”M”三个字母表示月份,”m”数字表示月份,”D”星期中的第几天,”d”月份中的第几天,”H”24小时格式,”h”12小时格式,”I”判断是否为夏令时,”i”分钟数,”s”秒数。25. getdate
通过getdate()函数可以获取日期信息,而该函数返回值为一个数组,其中包括指定的日期和时间信息。如果没有给出时间戳,则输出的是本地当前的日期和时间。
26. checkdate
在需要设计填写日期和时间的模块中,有时会因为录入失误,而产生错误。为了避免些类问题的出现,在设计时就要对日期进行检验,就是利用checkdate函数。声明如下:
27. checkdate
如果检验有效,返回true,否则返回false。month的有效值在1-12,day在给定的月之内,包括闰年,year的值在1-32767之间。.
28. time
获取当前时间戳通过time()函数来实现。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 ggchzzz@163.com