php -i查看 php.ini 配置文件
不输出错误原因:可能是 php.ini 导致的 (log 的配置问题, grep 配置排查下)

类型

  • string
  • int
  • float
  • bool

类型断言

is_string($x)
is_bool($x)

类型转换

  1. $str = "123";
  2. $int = 2020;
  3. $float = 99.0;
  4. $bool = false;
  5. var_dump((int) $str);
  6. var_dump((bool) $str);
  7. var_dump((string) $str);
  8. var_dump((bool) $str);
  9. var_dump((int) $float);
  10. var_dump((string) $float);
  11. var_dump((string) $bool);
  12. var_dump((int) $bool);

数组

var_dump($arr)查看详细的数据,包括类型
print_r($arr)查看数据,隐去类型

追加数据:

  1. $arr = [];
  2. $arr[] = "Java";
  3. $arr[] = "Python";
  4. $arr[] = "Golang";
  5. print_r($arr);
  6. // 遍历数据
  7. foreach ($arr as $item)
  8. {
  9. printf("%s\n", $item);
  10. }

Map

  1. $strangeMap = [
  2. "dog" => "狗",
  3. "cat" => "猫",
  4. ];
  5. $strangeMap["fish"] = "鱼";
  6. print_r($strangeMap);
  7. // 遍历
  8. foreach ($strangeMap as $k => $v)
  9. {
  10. printf("%s => %s\n", $k, $v);
  11. }

运算符

php 是弱类型 ===``!==
|| &&

函数

  1. // 申明变量与返回值的类型
  2. $add = function (int $x, int $y): int
  3. {
  4. return $x + $y;
  5. };
  6. printf("=> %d\n", $add(2, 3));
  7. // 引用传递
  8. function add(int &$a, int $b) {
  9. $a += $b;
  10. }

异常处理

  1. try {
  2. printf("exception demo!!!");
  3. } catch (Throwable $e) {
  4. Logger::info("Exception: %s\n", $e->getMessage());
  5. }

自定义异常:

面向对象

  • 对于通过 public 声明的属性和方法,在类以外和继承类中均可见;
  • 对于通过 protected 声明的属性和方法,仅在继承类(支持多个层级)中可见,在类以外不可见;
  • 对于通过 private 声明的属性和方法,仅在当前类内部可见,在继承类和类之外不可 ```php abstract class Car { var $brand; var $wheelNum; var $maxSpeed;

    /**

    • Car constructor.
    • @param $brand
    • @param $wheelNum
    • @param $maxSpeed */ public function __construct(string $brand, int $wheelNum, int $maxSpeed) { $this->brand = $brand; $this->wheelNum = $wheelNum; $this->maxSpeed = $maxSpeed; }

      public function run(): void { printf(“%s is running\n”, $this->brand); } }

class Tesla extends Car {

  1. /**
  2. * Tesla constructor.
  3. * @param $brand
  4. */
  5. public function __construct(string $brand)
  6. {
  7. parent::__construct($brand, 4, 120);
  8. }

}

  1. 不要使用继承,使用面向接口编程
  2. ```php
  3. interface Car
  4. {
  5. public function run(): void;
  6. }
  7. class CarFramework
  8. {
  9. var $wheelNum;
  10. var $maxSpeed;
  11. /**
  12. * CarFramework constructor.
  13. * @param $wheelNum
  14. * @param $maxSpeed
  15. */
  16. public function __construct($wheelNum, $maxSpeed)
  17. {
  18. $this->wheelNum = $wheelNum;
  19. $this->maxSpeed = $maxSpeed;
  20. }
  21. }
  22. class Tesla implements Car
  23. {
  24. var $carFramework;
  25. var $brand;
  26. /**
  27. * Tesla constructor.
  28. * @param $carFramework
  29. * @param $brand
  30. */
  31. public function __construct($carFramework, $brand)
  32. {
  33. $this->carFramework = $carFramework;
  34. $this->brand = $brand;
  35. }
  36. public function run(): void
  37. {
  38. printf("%s is running.", $this->brand);
  39. printf(
  40. "Info => wheel: %d, max speed: %d\n",
  41. $this->carFramework->wheelNum,
  42. $this->carFramework->maxSpeed
  43. );
  44. }
  45. }
  46. // using
  47. $tesla = new Tesla(new CarFramework(4, 120), "Tesla");
  48. $tesla->run();