第6章 PHP中的数组与数据结构
6.1数组的分类:(1)索引数组的索引值是整数。(2)关联数组以字符串作为索引值。
6.2数组的定义:(1)直接为数组元素赋值即可声明数组。(2)使用array()函数声明数组。
直接赋值:$数组变量名[下标] = 内容
例:$arr[0]=1;$arr[1]=2;索引数组索引值连续的话可以省略下标$arr[]=1;$arr[]=2;
也可以是不连续的整数下标$arr[]=1;$[9]=10;$[]=11;$[9]=12;$[]=13;重复索引相当于重新赋值,最后个元素的索引是11
使用array()语言结构新建数组:$数组变量名 = array(key1=>value1,key2=>value2);
如果不使用=>默认为索引数组。
6.3数组的遍历
6.4预定义数组
全局存在,不需要global关键字访问它们。
$_SERVER:服务器变量;环境变量:$_ENV;URL GET变量:$_GET、$_POST...
第7章 PHP面向对象的程序设计
拓展:说一门语言面向对象,重点在“面向”,不代表不能实现“面向过程”,面向就是合适。
7.1面向对象介绍
7.2类
[一些修饰类的关键字] class 类名{
}
7.3通过类实例化对象
$变量名 = new 类名称([参数列表]);或$变量名 = new 类名称;
访问对象中的成员:对象引用名->属性/方法,如果对象的成员不是静态的,这是唯一的访问形式。
特殊的对象引用$this
构造方法:__construct([参数列表]){}
析构方法:__destruct(){} 在对象被释放的时候执行,对象的引用被赋予其他的值或页面运行结束。对象的引用存放在栈内存中,栈后进先出,最后创建的引用会被最先释放。
7.4封装性
使用private关键字修饰实现对成员的封装,私有,外部不能访问。
通过共开的方法访问私有成员,魔术方法:__set(属性名,属性值),__get(属性名),使用需要将__set(),__get()声明在类里,然后在函数中写自己的保护逻辑。
7.5继承性
使用“extends”关键字实现多个类的单继承关系
访问类型控制:private、protected、public(默认)
重写父类方法命名相同名字即可,调用父类方法parent::方法名
7.6常见的关键字和魔术方法
(1)final:不能用final标识成员属性,final有常量的意思,但是在php中常量通过define()的函数来完成。
使用final标识的类不能被继承 final class MyClass(){};
在类中使用final标识的方法在子类中不能被覆盖;
违法系统会报错。
(2)static:将类中成员标识成静态的,可以标识成员属性和方法。
静态成员方法属于类,实例的对象共享,访问直接通过类Person::静态成员。
在类中访问其他静态成员,不能同$this,用self::
静态方法中只能访问静态成员,因为非静态成员必须通过对象应用才能访问。
(3)const:定义常量通过define()函数,但是在类中定义常量用const,变量名前不加$,全大写,访问跟static一样,也不能通过对象访问。常量属性是只读的,重新赋值会出现错误,所以在声明常量的时候一定要赋初值。
(4)clone:克隆对象
类中可以声明一个__clone方法,在克隆对象时会自动调用,包含$this对象引用,是副本对象引用。
(5)__toString():在类中声明__toString(),就可以直接 echo $p,返回我们想要返回的字符串,__toString()要有一个字符串做返回值。
(6)_call():如果尝试调用类中不存在的方法,系统会报错,在类中声明__call(),会调用这个方法。
__call()有两个参数,第一个参数是调用不存在的方法名,第二个调用时传的参数列表。
(7)__autoload():自动加载类,在调用一个不存在(未引入)的类时会调用该方法。
