php面向对象学习
注意:该文档是保姆级别教程,都是我学习过程整理所得
1.编程思想
POP :面向过程编程
OOP:面向对象编程
2.面向过程
2.1概念
面向过程是一种编程思想
面向过程是一种以过程(步骤)为中心的编程思想
面向过程是人类的思考问题的一种习惯
2.2面向过程例子
提交表单发送数据到服务器
- 连接数据库,选择数据库,设置字符集
- 判断表单来源是否安全
- 获取表单数据,普通表单数据处理,图片数据处理(上传、加水印、生成缩略图等)
- 构建sql语句,把数据插入到数据库
- 跳转到列表页
这就是一个面向过程的编程,是不是很符合人类思考习惯?一步一步来。
3.面向对象
3.1概念
面向对象是一种以事物(对象)为中心的编程思想
面向对象是以功能来划分问题,而不是步骤
面向过程,就是着重于做什么;面向对象,就是着重于谁去做
3.2面向对象例子
还是提交表单发送数据到服务器
- 连接数据库,选择数据库,设置字符集(数据库对象)
- 判断表单来源是否安全
- 获取表单数据,普通表单数据处理,图片数据上传(上传对象),添加图片水印(图像处理对象),生成缩略图(图像处理对象)
- 构建sql语句,把数据插入到数据库(数据库对象)
- 跳转到列表页
做什么事,就给专业的人来做,我只要结果。
4.类和对象的关系
4.1 类的概念
- 类就是分类、类别、模板、概念等,类是无形的、看不见、摸不着,不实际存在的
- 类是具有相同**属性(特征)和行为(动作)**的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分
4.2 对象的概念
- 客观世界中任何一个事物都可以看成一个对象,对象看得见、摸得着,实际存在的
- 任何一个对象都应具有这两个要素:属性(Attribute)和行为(Behavior)
- 对象来自于某个类,对象不能单独存在。一个类可以产生千千万万个对象
- 对象和类的关系是,对象是类的实例,类是对象的模板
- 类是抽象的,几乎不占用内存,而对象是具体的,占用存储空间
4.3 区别
在现实中,先有对象,再有类
在电脑中,先有类,再有对象
5.类的定义
5.1类的定义语法
类和函数一样,都是代码的封装方式
<?php
//类的定义
class ClassName{
//类的代码
}
// class:声明类的关键字
// ClassName:类名称,和变量的命名方式一样,但是前面没有$符号,类的命名方式通常是驼峰式命名,每个单词首字母大写
// ClassName后方没有小括号,直接跟随大括号
// {}中是类的定义代码 :对象属性,对象方法等
5.2类定义简单例子
<?php
//定义一个人类:由属性和方法构成
//注意:类只有两种内容,成员属性和成员方法
//成员属性:就是普通的变量
//成员方法:就是普通的函数
class People
{
//成员属性
public $name = "Donald Trump";
public $age = "74";
//成员方法
public function speech()
{
echo "没有人比我更了解中国";
}
}
6.类的成员属性定义
6.1成员属性概念
- 类的成员属性,就是指某个类具有的公共的特征、特性
- 类中定义的变量,就是类的成员属性
- 类的成员属性和普通变量的区别:类的成员属性必须要带权限修饰符,而普通变量不需要
6.2权限修饰符
- 成员属性必须要加权限修饰符,否则报错
- public(公共权限):在任何地方都可以访问,主要包括:类外、本类中、子类中都可以访问
- private(私有权限):只能在本类中被访问,在类外和子类中都无权访问
- protected(受保护的权限):只能在本类中和子类中被访问,在类外不能被访问
6.3举个栗子
<?php
class Goods{
//对象属性:可以用不同的修饰符进行修饰,必须要加,否则报错
//品牌
private $brand;
//价格
public $price = 100;
//类别
protected $catetory;
}
7.类的成员方法定义
7.1成员属性概念
- 类的方法,就是某个类的公共的的行为或动作
- 类的成员方法,与普通函数一样,都有返回值和参数
- 成员方法与普通函数区别:成员方法只能存在于类中,成员方法定义前可以添加访问权限修饰符
- 成员方法可以省略权限修饰符,默认访问权限是public
7.2示例
<?php
//定义一个电脑类
//成员方法,可以传参,可以返回数据,也可以不传参,不返回数据
class Computer{
//成员方法(对象方法)
public function show($a,$b){
return $a+$b;
}
//私有成员方法
private function getConfig(){
echo "i7 4核 8G";
}
//不写修饰符,默认是public
function setNum(){
}
}
8.创建类的对象
8.1实例化对象的含义
- 定义类是为了生产对象,如果不生产对象,类就没有意义
- 一个类可以产生千千万万个对象,对象帮我们干活
- 对象实例化:从一个类上来生产对象过程,就是类的实例化
8.2语法格式
- 使用new关键字来创建对象
- JS创建对象的方法:var today = new Date()
- PHP创建对象的方法:$obj = new Student()
8.3示例
<?php
//定义一个学生类
class Student{
//成员属性
public $name = "川普";
private $age = 74;
//成员方法
public function hello(){
echo "大家好,我是川普";
}
}
//类外,实例化对象:从类上创建对象的过程
$obj = new Student();
//一个类创建一个对象过于浪费,我们可以创建无数个
$obj2 = new Student();
//打印查看
var_dump($obj,$obj2);
9.对象属性和方法的操作
9.1如何访问对象的属性和方法?
- 在JS中,访问对象属性和方法,是通过"."来访问的。例如:window.alert()、arrObj.length
- 在PHP中,访问对象属性和方法,是通过"->"来访问的。例如: o b j − > n a m e 、 obj->name、 obj−>name、obj->hello()
<?php
class Student{
//公共的成员属性
public $name = "唐纳德";
public $age = "74";
//私有的成员属性
private $hobby = "golf";
//公共的成员方法
public function hello(){
echo "大家好,我是唐纳德";
}
}
//实例化对象
$obj = new Student();
//访问属性
echo $obj->name; //唐纳德
// echo $obj->hobby; //无法访问私有成员属性
//访问方法
// $obj->hello();//大家好,我是唐纳德
9.2对象属性的操作
<?php
//定义一个学生类
class Student{
//公共的成员属性
public $name = "唐纳德";
}
//实例化对象
$obj = new Student();
//修改属性,给成员属性重新赋值
$obj->name = "唐纳德·川普";
//添加属性
$obj->age = 74;
//删除属性
// unset可以删除变量,数组元素,对象属性等
unset($obj->age);
//访问属性
echo '大家好' . $obj->name;
9.3对象方法的操作
对象方法的操作步骤:方法定义、方法调用、传递参数、方法返回值。
<?php
class Student
{
//定义公共的成员方法
public function eat($name, $food)
{
return "{
$name}中午吃了{
$food}";
}
}
//创建学生类对象
$obj = new Student();
//调用方法,传递参数,输出返回值
echo $obj->eat("川普","汉堡");
10.伪变量$this的使用
10.1伪变量$this的含义
- 在JS中,使用this关键字来代替当前对象,例如:this.src = ‘./a.jpg’
- 在PHP中,使用 t h i s 变 量 来 代 替 当 前 对 象 , 例 如