面向对象与面向过程的定义:
面向过程:面向过程是一种一过程为中心的编程思想。在面向过程中也可称为“面向记录”编程思想 通俗讲:在完成一件事情,完成一个功能由开始到结束,通过完成一个一个步骤再进行下一步骤,知道事件的完成,叫面向过程。
面向对象: 面向对象是一种思想是一种以实物为中心的编程思想
2,面向对象主要由两大块组成 : 类,对象
类: 用来 定义好某些对象的模板 ,里面有对象的成员属性(属性由变量,或者常量组成),成员方法(普通成员方法,构造方法,析构方法)。
对象: 对象是根据该模块所创造出来的具体物体。一个对象由那些属性,可以做那些事情 都由类的属性,方法决定。
3,面向对象的语法:
1,定义类: (类含属性(变量属性,成员属性,静态属性)方法(成员方法,静态方法,构造方法,析构方法))
class Person
{
$name="张三" //变量属性
const age =24;//常量属性
static $sex ="女";
}
function __construct ($a,$b)
{
}
function Study()
{
}
function __destruct()
{
}
2,创建对象:
$对象名1 ->nes Person(); //创建对象
$cname = Person;
$对象2->cname();//创建可变类对象
$对象名3 =new self //self 指代表类本身,只能在类的内部方法中使用
3,对象使用: (对象的使用由类决定有什么使用什么) 主要有以下三种方式
3.1 使用类属性: $Person1 -> name="李四”; 此处相当给属性赋值
3.2 使用类方法: $Person1->study();
3.3 获取属性值 $str = $Person1->name // 将类的属性值赋予$str
4,对象的传值:
主要有两种传递方式: 、
值传递 :传递完之后,有了2份同样的数据,但两个变量“相互独立”没有关系
引用传递:传递的时候,拷贝的是引用关系。需要使用“&”才能实现引用传递,
传递完之后,数据仍然只有一份,但是两个变量共同指向该数据
值传递:
class Person {
var $v1 =10;
}
$p1 = new Person();
$p2 =$p1;
$p1->v1=20;
echo $p1->v1;//输出20
echo $p2->v1;//输出20
此处是将$p1的值传递给$p2, 因此在$p1的值改变,$p2的值也跟着改变
引用传递: $p3 = new Person();
$p4 =&$p3;
$p3->v1=100;
echo $p3; //输出100
echo $p4; //输出100
5,构造方法:
构造方式是类中一个特殊方法,其作用是在实例化一个对象的同时,给该对象的
属性赋值,使对象创建完成后就具有本身的特有的数据(属性值)
6.1 构造方法的名字是固定为: __construct();
6.2,该方法必须是普通方法,(不能静态方法)
6.3 通常该方法中使用$this这个关键字来对属性值进行赋值
6.4 当new 新对象的时候,就已经调用该构造方法
6.5 定义了构造方法,实例化该类时就调用该方法,且实例化的参数跟构造方法的
class Person
{
public $name = "abc";
public $age = "18";
function __construct($n,$a)
{
$this->name= $n;
$this->age= $a;
}
function intro($a,$b)
{
echo "大家好我叫 .$this->name .年龄.$this->age";
}
}
$Person1=new Person('cba',20); //可以看作调用构造方法
$Person1->intro(); //输出大家好我叫 cba年龄20
6,析构方法:function __destruct(){.....}
构造方法是“创建”对象的时候会自动调用。
析构方法是“销毁”对象的时候会自动调用。
说明:
1,析构方法通常不太需要去定义。
2,析构方法不能调用。
3,析构方法不能有形参。