分享

PHP丨类与对象

 CKO养成计划 2020-09-27

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

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

什么是对象?

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

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

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

什么是类?

类是一个抽象的概念。

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

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

本期要点:

  • 基础语法

    定义类

    根据类得到一个对象

    定义类属性

    定义类方法

  • 操作对象

    调用对象属性

    调用对象方法

  • 伪变量($this)

基础语法


①定义类

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

<?php 

class name{}

?>

②根据类得到一个对象:

<?php 

class name{}

$name = new name();

var_dump( $name );

?>

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

  • 类的实例化就是对象

我们可以看到浏览器输出的是 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 可以省略,但类属性里的一定不要省略。

操作对象


⑤调用对象属性:

<?php 

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 前面不能再加 $ 符了。

⑥调用对象方法:

<?php 

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();

?>

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

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

伪变量( $this )


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

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

<?php 

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'

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

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

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

<?php 

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 基础教程丨PHP 网站开发

Web 网站的工作原理

开发前的准备工作

MAC 系统怎么搭建自带的 PHP 开发环境

HTML丨语言简介

HTML丨标签和属性

HTML丨基本结构与常用格式标签

HTML丨网页编辑实战

CSS丨简介与引入方式

CSS丨选择器

CSS丨样式

CSS丨布局

CSS丨网页美化实战

PHP丨第一个 PHP 程序

PHP丨变量

PHP丨数据类型

PHP丨数组

PHP丨数据的发送与接收

PHP丨运算符

PHP丨流程控制

效率工具

AutoCAD 2018附软件+注册机

AdobeCC 2018 破解全系列(WIN+MAC)

Office 2019 早期预览版(免激活)

免费看 VIP 视频,高速下载百度云,听高清网易云...你只差一个小插件

平面设计自学指南

小众电影

美国往事丨如果你的一生只能看一部电影的话,那就看这一部吧

蝴蝶丨我比你年轻,我还有余力等你(les题材)

东京夜空最深蓝丨活着吧,要活到死才对

荒野生存丨我想那么年轻,干净,那么寂寞地活着,直到可以突然失踪在马路上的那一天

0 基础教程丨小程序开发

0 基础要怎么自学小程序开发

小程序开发环境搭建和布署

微信开发者工具的认识

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多