PHP高级
1、PHP高级语法
类和对象语法
继承
魔术方法
常量、静态属性和方法
抽象类
接口
trait
命名空间
异常处理
PDO
2、PHP高级实战
验证码类
分页类
文件上传类
图像处理类
数据库操作类
模板测试类
设计模式
自己搭建MVC框架
3、JavaScript
DOM操作
定时器
常见效果
ajax
jQuery
PHP高级语法-类和对象
类和对象的概念和简单使用

我们已经熟悉了用面向过程的思路去解决问题,现在我们要转为面向对象去解决
对象要具体到真正的实物,宝马、路虎不是对象,它还是一个类,你的宝马就是一个对象了
类是对象的抽象,对象是类的具象
人类具有属性和行为,对应到代码中就是变量和方法
在面向过程的语言中,我们都叫做函数,在面向过程的语言中我们把函数习惯叫做方法
<?php人类{年龄;//属性(变量)吃饭;//行为(方法)}

<?php/*人类{年龄;//属性吃饭;//方法}*///定义类class Person //类名遵从大驼峰原则(大驼峰是每个单词首字母大写,小驼峰是首个单词首字母小写,其他单词首字母都大写){public $age;//属性对应到类里面就是变量 //叫成员属性public function eat()//行为对应到类里面就是方法 //叫成员方法{echo '我在吃饭';}}//如何通过类来定义一个具体的对象呢?在PHP中写法如下://定义对象的第一种方法:$xiaoming = new Person(); // new 类名称(),这个小括号可加可不加,建议加var_dump($xiaoming); //object(Person)#1 (1) { ["age"]=> NULL }
//定义对象的第二种方法:可以通过一个类名字符串直接定义一个对象$name='Person';//我们将Person给到一个变量当中$xiaoming=new $name();//然后通过这个变量去实例化一个对象
现在我们对象已经创建,xiaoming肯定有年龄,和eat方法,下面打印xiaoming年龄:
对象访问属性和方法
//然后通过对象访问自己的属性和方法?var_dump($xiaoming->age);//null 对象访问自己属性的时候前面不加$ 这种访问属性叫做读取属性的值//当然我们也可以设置属性$xiaoming->age=18;var_dump($xiaoming->age);//18//我们上面通过->连接符可以去访问里面创建属性,怎么来调用里面方法呢?$xiaoming->eat();//这里写函数名以()结尾,这样就会执行对象中的eat方法
注意访问属性名前面没有$,调用方法要以()结尾
构造方法和this关键字
<?php//定义类class Person{public $name;public $age;public function eat()}//创建对象$ming=new Person();$ming->name='小明';$ming->age=20;var_dump($ming);$niu=new Person();$niu->name='小牛';$niu->age=18;var_dump($niu);//上面这样给对象里面的属性赋值很麻烦,有没有什么方法在我们直接创建对象的时候,给我们对象里面的属性进行初始化呢?//有,就是构造方法

<?php//定义类class Person{public $name;public $age;public function __construct(){echo '小样,调用我了吧';}}$ming=new Person();$niu=new Person();

我们想给ming里面的age和name属性给一定的初始值,我们就要通过构造方法传参进行赋值:
class Person{public $name;//成员属性public $age;public function __construct($name,$age){//echo '小样,调用我了吧';//下面我的工作就是将$name和$age的值给到自己的name//在类里面如何访问自己的成员属性?关键字$this,代表的就是当前对象$this->name=$name;//当前对象去访问自己的成员属性$this->age=$age;}}$ming=new Person('小明',20);//这样当你创建对象时候,小明 20就会被传到构造方法的两个形参变量里面去$niu=new Person('小牛',18);var_dump($ming);var_dump($niu);/*object(Person)#1 (2) {["name"]=>string(6) "小明"["age"]=>int(20)}object(Person)#2 (2) {["name"]=>string(6) "小牛"["age"]=>int(18)}*/
这里面的$this就是当前对象,你在新建小明的时候,$this就是$ming,你在新建小牛的时候$this就是$niu,我们通过this访问自己的成员属性。
因为我们成员属性和成员方法的访问都是通过对象来访问的,那么在类里怎么找到这个对象?就是this关键字
<?phpclass Person{public $name;public $age;public function __construct($name,$age){$this->name=$name;$this->age=$age;}public function test1(){echo '今天天气真好<br />';}public function test2(){$this->test1();//在类里面调用成员方法echo '我想约女朋友去看电影<br />';}}$niu=new Person('小牛',20);$niu->test2();//所以在构造方法中,我们通过this拿到自己的成员属性,再将传递过来的值赋值给它,这样就完成了对象的初始化!
