php 什么是对象,PHP丨类与对象

203279964_1_20200927051026149_wm

在学习类与对象之前,我们需要先了解一下面向对象的概念:《五分钟理解什么是面向对象》。

我们之前所有接触的都是面向过程的编程方式(函数式编程),而当我们学了类与对象之后就可以实现面向对象编程了。

什么是对象?一切皆对象(不管你之前有没有听过这句话,但相信以后这绝对不会是你唯一听到的一次)。

我们研究的任何具体的事物或抽象的规则或计划都可以称之为对象(就像我们之前所了解的怎么把大象装进冰箱)。

对象由属性和方法组成,大象就是属性,把大象装进冰箱的动作我们称之为方法。我们暂可以理解为变量就是属性,函数就是方法。

什么是类?

类是一个抽象的概念。

类是抽象的,对象是具体的,比如:你娶了个老婆叫lizzy,老婆是类,lizzy是对象。因为老婆是一类人,而lizzy是具体的某一个。

(对于没有接触过的童鞋可能暂还是无法理解,那就先暂跳过,等完全了解下面的内容后自然就明白了)。

本期要点:基础语法

定义类

根据类得到一个对象

定义类属性

定义类方法

操作对象

调用对象属性

调用对象方法

伪变量($this)

基础语法

①定义类

每个类的定义都以关键字 class 开头,后面跟着类名,后面跟着一对花括号(里面包含有类的属性与方法的定义)。<?php

class name{}

?>

②根据类得到一个对象:<?php

class name{}

$name =newname();

var_dump( $name );

?>用关键词 new 把类实例化(根据 name 类实例化对象,把结果赋给变量 $name )。

类的实例化就是对象。

203279964_2_20200927051026180_wm

我们可以看到浏览器输出的是 object ,也就是变量 $name 的值是一个对象。

③定义类属性:<?php

class name{

public $s1 = 0;

public $s2 = 1;

}

$name = new name();

?>

上面我们简单提过:变量就是属性,函数就是方法。

④定义类方法:<?php

class name{

public $s1 = 0;

public $s2 = 1;

public function s1(){

echo 's1';

}

public function s2(){

echo 's2';

}

}

$name = new name();

?>其中 public 表示可见性,后期会讲(官方手册:PHP手册-语言参考-类与对象-访问控制)。

其中类方法的 public 可以省略,但类属性里的一定不要省略。

操作对象

⑤调用对象属性:

class name{

public $s1 = 0;

public $s2 = 1;

public function s1(){

echo 's1';

}

public function s2(){

echo 's2';

}

}

$name = new name();

echo $name -> s1;

?>-> 是指向运算符。

注意 s1 前面不能再加 $ 符了。

⑥调用对象方法:

class name{

public $s1 = 0;

public $s2 = 1;

public function s1(){

echo 's1';

}

public function s2(){

echo 's2';

}

}

$name = new name();

echo $name -> s1;

echo $name -> s1();

?>

在这里我们可以联想一下变量的定义与调用及函数的定义与调用:

203279964_3_20200927051026540_wm

这样我们就会比较容易理解类与对象的定义与调用了〜

伪变量( $this )

之前我们所讲的是通过对象(类的外部)去调用对象的属性和方法。

那么,如果我们要在类的内部调用属性和方法应该怎么办?

class name{

public $s1 = 0;

public $s2 = 1;

public function s1(){

$s1 = new name();//在类里面实例化自己

$s1->s2();//假设,我们需要调用s2的方法

}

public function s2(){

echo 's2';

}

}

$name = new name();

$name -> s1();//执行调用$name的s1

?>

我们可以看到浏览器输出的结果是没有问题的:我们调用的是s1的方法

s1里面实例化了一个name($s1)的对象,然后调用了一个s2的方法

最终echo's2'

203279964_4_20200927051026680_wm

其实我们可以更简单一点:

我们想要调用一个类属性或者类方法首先必须得到它的对象。

但是,如果是在类的内部我们还有另外一种方法可以简化,不需要去实例化,直接去使用 $this

class name{

public $s1 = 0;

public $s2 = 1;

public function s1(){

$this->s2();//直接使用$this

}

public function s2(){

echo 's2';

}

}

$name = new name();

$name -> s1();//执行调用$name的s1

?>

你可以发现最终浏览器输出的结果是一样的。需要注意的是它一定要写在类的方法里面(不能写在属性里)。

在方法外面只能定义类属性和类常量(类常量还没讲)。This is not the end.It is not even the beginning of the end.But it is,perhaps,the end of the beginning.

更多分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值