PHP学习笔记2
用于根据多个不同条件执行不同动作。如果不在每个条件后加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 }
-
数值数组
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() 。