Menu

tlanyan

十里平湖霜满天,寸寸青丝愁华年

PHP回顾之PHP基础

回顾PHP的一些基础知识,权当对这么多年学习和使用PHP的提炼和总结。

PHP设计之初作为一门宏定义语言,主要用来处理网页表单,所以被设计为可以内嵌在HTML文件里。为了区分HTML代码,PHP代码块的起始界定标签是<?php,结束标签是?>(PHP5.4版本以后可以使用<?和?>短标签)。对于纯PHP文件,同样需要保留<?php作为起始标识,但建议省略结束的?>标签。

变量/常量

PHP中的变量定义需以美元符号“$”开头,例如: $name = 'tlanyan'。变量名不支持声明变量类型,大小写敏感。合法的变量名以字母、下划线开头,不能以数字、点、加减乘除等特殊符号开头,但是可以以中文汉字开头。

以下是一些变量的声明以及合法性判断:

常量的定义方式有两种:define和const。常量名中的字母必须全部大写,可以用下划线连接。例如:

常量定义后,不能更改和取消。defined可以判断一个常量是否定义,constant函数可以取出常量的值(效果同直接取值)。define和const的主要区别是define可以用在判断语句中,但是const不行。如果你需要灵活的方式定义变量,请使用define,否则都建议用const定义常量。

函数

函数的定义以function关键字开头,后接函数名和参数,以大括号包含的函数体结束。代码的定义形式为:

函数名的要求同变量名,不能以数字开头,不能包含点、加减乘除符号等特殊符号和字符,但是可以用中文命名。不同于变量,函数名不区分大小写

函数参数可以没有,也可以有多个。支持默认参数,但是默认参数后不可出现必须传值的参数。对于基本类型,参数默认按值传递,对象和资源默认引用传参。

函数体可以为空,也可以有多个语句。可以return返回值,也可以不返回。如果函数没有返回值,则默认为null。

下面是一些函数的示例:

注意如果限定传参和返回值是bool类型,应该用bool而不能使用boolean,否则运行会报错。

PHP目前为止不支持重载。一种变相的重载实现方式是: 以 …args 定义函数参数,函数体根据参数个数实现不同功能。

操作符

PHP支持常规算术运算符、赋值运算符、位运算操作符等。以下是一些示例:

流程控制

PHP支持常见的分支判断、循环等流程控制。以下是一些示例:

类/接口/名字空间/特性

PHP5.3增加了名字空间和静态延迟绑定,PHP5.4增加了特性(trait)功能,标志着PHP对面向对象编程的支持进了一大步。

类在基本类型和数组上进行了拓展,丰富了编程中的类型,同时让开发人员有能力在更高层次上对问题进行建模。

PHP用class关键字对类进行定义,类中可包含属性变量、属性常量、行为方法和特性。以下是定义和使用类的示例:

__construct和__toString函数被称为“魔术方法”,常用的魔术方法还包括:__get, __set, __clone, __call等。当对类的对象发送消息时,这些魔术方法赋予拦截的机会,从而做出响应。

接口

编程中很重要的一个原则是面向接口编程,而非面向实现编程。接口规定了实现接口时必须遵守的规则,屏蔽了具体的实现细节。在与其它层交互是,只需要按照既定义的规则对接即可,从而达到解耦的目的。

在PHP中用interface关键字定义接口,接口包含的规则同定义类的成员函数相似,但是接口不能包含成员属性、常量等。以下是一个接口定义和实现:

接口中只包含规则的签名,具体实现由实现类负责。一个实现类可以同时实现多个接口。

名字空间

为了更好的组织程序代码,也为了避免类名和方法名重复,PHP在5.3版本中增加了对名字空间的支持。名字空间用namespace定义,层次用反斜杠\来分割。名字空间定义必须出现在文件的非注释第一行。以下是名字空间的示例:

特性

特性(trait)是为了复用程序代码,在PHP5.4中增加的新功能。PHP不能使用多继承,但是可以将一些常用的功能抽取出来做成trait,然后包含到多个类中,达到代码复用的目的。

特性用关键字trait声明,可以包含属性和方法,但不能包含常量。下面是一个示例:

参考

  1. http://php.net/
  2. https://tlanyan.me/php-new-features-from-5-2-to-5-6/

发表评论

Scroll Up