PHP学习笔记2

PHP Switch语句

用于根据多个不同条件执行不同动作。如果不在每个条件后加break,将会输出所有结果。

 1 <?php
 2 $language="java";
 3 switch($language)
 4 {
 5     case "java":
 6         echo "right";
 7         break;
 8     case "javaScript";
 9         echo "false";
10         break;
11     default:
12         echo "true";
13 }

PHP中的数组

  • 数值数组

1 $stars = array["Venus","Pluto","Jupitor","Mars","Earth"];

获取数组长度用count()函数。

  • 关联数组

1 <?php
2 $height=array("Annika"=>"160","Sophia"=>"177");
3 
4 //遍历关联数组用foreach
5 foreach($height as $x=>$x_value)
6 {
7     echo "name=" . $x . ", height=" . $x_value;
8     echo "<br>";
9 }
  • 多维数组

3.PHP数组排序函数

  • sort() - 对数组进行升序排列

  • rsort() - 对数组进行降序排列

  • asort() - 根据关联数组的值,对数组进行升序排列

  • ksort() - 根据关联数组的键,对数组进行升序排列

  • arsort() - 根据关联数组的值,对数组进行降序排列

  • krsort() - 根据关联数组的键,对数组进行降序排列

4.PHP超级全局变量(superglobals)

可以在一个脚本的全部域内使用:

  • $GLOBALS(包含了全部变量的全局组合数组。变量的名字就是数组的键)

  • $_SERVER(一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组)

  • $_REQUEST(收集HTML表单提交的数据)

  • $_POST( 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post")

  • $_GET(同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。也可以收集URL中发送的数据。)

  • $_FILES

  • $_ENV

  • $_COOKIE

  • $_SESSION

5.PHP魔术变量

PHP有大量的预定义常量。很多要加载扩展库。

  • __LINE__(文件中的当前行号)

  • __FILE__(文件的完整路径和文件名)

  • __DIR__(文件所在的目录)

  • __FUNCTION__(返回当前函数名)

  • __CLASS__(返回类名)

  • __TRAIT__(Trait的名字)

  • __METHOD__(类的方法名,返回该方法被定义时的名字)

  • __NAMESPACE__(当前命名空间的名称)

6.PHP类的定义

  • 类使用class关键字后加上类名定义。

  • 类名后的大括号内可以定义变量和方法。

  • 类的变量用var来声明

  • 函数只能通过实例化的对象来访问。

7.PHP构造函数

构造函数是一种特殊方法,主要用来在创建对象时初始化对象,即为变量成员赋初始值。

1 function __construct($part1,$part2){
2     $this->url = $part1;
3     $this->title = $part2;
4 }
5 ​
6 //初始化对象
7 $tmall = new construct('www.tmall.com','天猫');

8.PHP析构函数

(destructor)与构造函数正好相反,当对象结束生命周期时,系统自动执行析构函数。

function __destruct(){
print "销毁";
}

9.继承

PHP使用关键字extends来继承一个类,不支持多继承。

class Child extends Parent

10.方法重写

如果从父类继承的方法不能满足子类的需求,可以在类外部对其进行改写。

11.访问控制

可以在变量、方法前添加关键字实现访问控制,没有添加的默认为共有:

  • public(公有):公有的类成员可以在任何地方被访问。

  • protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。

  • private(私有):私有的类成员则只能被其定义所在的类访问。

12.接口

使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

接口中定义的所有方法都必须是公有,这是接口的特性。

要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。

13.常量

可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。

常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。

自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如 self,parent 或 static)。

14.抽象类

任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。

定义为抽象的类不能被实例化。

被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。

继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。此外方法的调用方式必须匹配,即类型和所需参数数量必须一致。例如,子类定义了一个可选参数,而父类抽象方法的声明里没有,则两者的声明并无冲突。

15.static关键字

声明类属性或方法为 static(静态),就可以不实例化类而直接访问。

静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。

由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。

静态属性不可以由对象通过 -> 操作符来访问。

自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 self,parent 或 static。

 1 <?php
 2 class Foo {
 3   public static $my_static = 'foo';
 4   
 5   public function staticValue() {
 6      return self::$my_static;
 7   }
 8 }
 9 ​
10 print Foo::$my_static . PHP_EOL;
11 $foo = new Foo(); //foo
12 ​
13 print $foo->staticValue() . PHP_EOL; //foo
14 ?>    
16.final 关键字

PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

17.调用父类构造方法

PHP 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct()