本博客记录学习笔记
在学习完算不上入门的 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/>';
}
输出结果
今天的学习知识总结,转自一个 PHP 渣渣自学的笔记。
评论