PHP&学习入门:面向对象 - MrLee博客 - 一个伪全桟工程师的小站

MrLee博客

落子无悔,人生无返

PHP&学习入门:面向对象

本博客记录学习笔记
在学习完算不上入门的php知识后,了解面向过程后便开始涉及面向对象;
先对比一下面向过程和面向对象的区别:

面向过程(功能拆分):
把所有的function()都写在一个文件,每一个function()都是独立的,并且在引入这个文件时,PHP会计算所有的function()函数体的所占内存
贴代码:

<?php
function A(){}

function B(){}

面向对象(功能设计):

引入这个包含所有的class{} 文件后,在new对应的class类,才能调用内部的function()自定义函
数。在引入这个文件,PHP只会计算这个文件的大小,不会去计算内部的function()函数的占用内存。
贴代码:

<?php
# 创建class类
class ABC {
    public function A() {echo '我是A<br/>';}
    public function B() {echo '我是B<br/>';}
}
# 使用方法
$obj = new ABC;
$obj->A();
$obj->B();

面向过程优点:
1、代码量少
2、上手简单

面向过程缺点:
1、代码耦合度高、所有功能基本都是考页面引入关联起来
2、解耦能力差
3、解耦依赖function()自定义函数,内存开销巨大
4、项目难管理、代码难维护

面向对象优点:
1、程序逻辑清晰
2、代码耦合度低
3、解耦能力强
4、解耦使用class{},代替页面分离,减少function()所占用的函数体积内存开销
5、基于面向对象实现的单一入口程序,可以更好的管理项目,与维护旧代码
6、使用class{}类定义的函数,可以有效的控制调用权限,让程序更加安全。

面向对象缺点:
1、代码量多
2、上手难度高
注意:
这里的"页面分离"其实不是说MVC里面的Controller,
而是之前要把function分类起来,
只能用多个文件来分离(相关的function放同一文件)
在面向对象时用Class来分离(相关的function放同一Class

使用场景:

面向过程主要核心为function()
面向对象主要核心是class{} function() 为辅

类的构造函数(又称前置操作方法)

固定的:__construct();自动调用(初始化和调用变量)
与类名相同:比如class A 内部function A()
类的析构函数(又称后置操作方法)
__destruct();(用于在class类操作完成后自动释放一些资源)

类的调用权限控制

公共权限
public(公有的类成员、方法可以在任何地方被访问调用,访问域:类内部、外部都可以。)
私有的
private(类的内部调用,只能父类调用,子类不可以)
受保护的
protected(类的内部调用,父类(类的本身)和子类都可以)

类的操作练习
根据攻击力计算血量

<?php

class Test {
    # 血量为100 
    public $blood = 100;
    # 攻击力为10
    public $Agg   = 10;

    # 计算并且输出
    public function output() {
        $this->blood = $this->blood - $this->Agg;
        echo '受到攻击,剩余血量'.$this->blood.'<br/>';
    }
}

$obj = new Test;
$obj->output();
$obj->output();
$obj->output();

输出结果
QQ截图20190617221634.png

今天的学习知识总结,一个PHP渣渣自学的笔记。

本文共683字

评论卡