PHP 开发技术分享

PHP 基础知识汇总

2021-05-06  本文已影响0人  phpworkerman

有道是温故而知新,良好的基础才是前行的保障。

1、PHP 支持10种数据类型。

  • 标量类型:string(字符串)、int(整型)、float(浮点型)、bool(布尔型)
  • 符合类型:array(数组)、object(对象)、callable(可调用)、iterable(可迭代)
  • 特殊类型:resource(资源)、NULL(无类型)

2、变量作用域

  • 变量范围可跨越 include 和 require 引入的文件
  • 用于函数内部的变量,范围被局限于函数内
  • 使用 global 关键字可以在函数内部使用全局变量
  • 静态变量仅在局部函数域中存在,当程序离开域时,变量值不丢失。

3、运算符

  • 前递增 ++a 得到递增后的值,后递增a++ 得到递增前的值,null 值递增时加1,null 值递减还是 null
  • instanceof 类型运算符用来确定一个变量是否是属于一个类的实例、是否继承某一父类的子类的实例、是否实现了某一个接口

4、流程控制

  • for 循环中,for (expr1, expr2, expr3),expr2 通常用来指定循环次数,避免用 count() 函数来每次计算目标总数
  • foreach 循环中,如果需要给多维数组解包,可以用 list()
  • switch 循环中,当 case 匹配到 switch 中的表达式时才执行,并且直到碰到 break 才停止
  • require 和 include 也属于流程控制,区别是 require 在加载失败时会产生 E_COMPILE_ERROR 错误,并终止脚本,include 只产生警告,脚本正常执行

5、函数

  • 可变数量的参数列表通过 ... 语法将参数列表变为一个数组
  • 如果在类中,使用可变函数优先级高于静态变量
  • 匿名函数使用 use 语法从父作用域中继承变量
  • 箭头函数是更简洁的匿名函数,它可以自动捕获父作用域的变量

6、类和对象

  • 如果类中属性值为匿名函数,将无法直接调用函数,因为属性优先级更高,需要在属性外加(),($this->attr)()
  • PHP 不支持多重继承,一个类只能继承一个基类
  • ::class 语法用于类名的解析,包含类名的命名空间,解析类名的操作在底层编译时进行,即使要调用的类不存在,类名也会被展示,不会报错。
  • 抽象类不能实例化,子类必须实现抽象类中的所有抽象方法,访问控制范围不能小于抽象类,参数类型也必须完全符合
  • 一个类可以实现多个接口
  • trait 是解决单继承语言复用问题,方法优先级 自身 > trait > 基类
  • 如果多个 trait 引入出现方法重名冲突,有两种解决方法,一种是用 instanceof 指定方法属于哪个 trait,另外一种是用 as 给方法指定别名,as 语法还可以修改方法的访问控制
  • trait 可使用抽象方法,强制类的使用
  • 对象比较 == 代表两个对象是同一个类型的实例, === 代表两个对象变量是同一个对象
  • 后期静态绑定 ::static 不再被解析为定义当前方法所在的类,而是在实际运行时计算的
  • 后期静态绑定的解析会一直到取得一个完全解析了的静态调用为止

7、命名空间

  • 名称解析分为非限定名称(func)、限定名称(A\func)、完全限定名称(\A\func)

8、异常

  • try/catch/finally,finally 块里的 return 会和前两个块中的 return 相互影响,优先执行 finally 块
上一篇 下一篇

猜你喜欢

热点阅读