在对超大型项目的开发过程中,如果使用面向过程地开发,代码量是非常的庞大,这将大量的用到判断和循环嵌套,

和很多很相似的代码,不仅使项目代码量更加的庞大,还不利于开发,重用及维护。

面向对象就能很好的解决这个问题,面向对象很好的封装性,节省了很多精力,不用关心对象内部的运作,只要关心

对象与对象之间的交互,便于维护,而继承性使得代码大量地精简。

我们先来看一个题目:

:张三是一位普通人,别人早晨向他打招呼,他会说“早上好”,但是有一天他被车撞了,脑子受了一点伤,

因此,别人早晨向他打招呼时,他有时会说:“早上好”,但有时会说:“晚上好”,甚至辱骂对方。

分析:因为现在要面向对象,那我们先把对象拿出来

   对象1:张三(人)   智商(名称是属性)   打招呼(动词是方法)

   对象2:车子  撞人(动词是方法)

<?php
//创建一个human类,类是对象的实例(工厂里的模子)
class human{
//普通人的iq为100
public $iq = 100;
//打招呼,早上看到人就早上好
public function greet(){
echo '早上好';
}
}
//实例化一个对象李四
$lisi = new human();
$lisi->greet();
//返回早上好 ?>

  这个是实例化一个正常的李四

下面来看被车子撞了的李四

<?php
//创建一个human类,类是对象的实例(工厂里的模子)
class human{
//普通人的iq为100
public $iq = 100;
//打招呼,早上看到人就早上好
public function greet(){
//当智商大于等于100
if($this->iq>=100){
echo '早上好','<br />';
}else{
//当智商小于100,随机出现以下问候
$regard = array('早上好','晚上好','混蛋');
echo $regard[rand(0,2)],'<br />';
}
}
}
//实例化一个对象李四
$lisi = new human();
$lisi->greet();
//返回早上好
class car{
public function hit($people){
//撞了以后人的智商随机出现了变化
$people->iq=rand(40,120);
}
}
//实例化一辆宝马车子
$baoma = new car();
//宝马车子撞人了
$baoma->hit($lisi);
//撞人之后人的智商
echo $lisi->iq,'<br />';
//人的根据智商的多少,问候也不相同
$lisi->greet(); ?>

  

面向对象(PHP学习)的更多相关文章

  1. 前端学习:JS面向对象知识学习(图解)

    前端学习:JS面向对象知识学习(图解) 前端学习:JS(面向对象)代码笔记 JS面向对象图解知识全览 创建类和对象 方式1:使用Object()函数 方式2:使用自变量 方式3:使用工厂函数 创建多个 ...

  2. JS面向对象逆向学习法,让难理解的统统一边去(1)~

    对于面向对象我只能说呵呵了,为什么呢,因为没对象--- 既然你看到了这里,说明你有一定的基础,虽然本系列文章并不会过多的讲述基础部分,请做好心理准备. 本篇比较简单,这篇文章的意义是让你明白学习面向对 ...

  3. php面向对象编程学习之高级特性

    前几天写了一篇关于php面向对象基础知识的博客,这两天看了php面向对象的高级特性,写出来记录一下吧,方便以后拿出来复习. 面向对象除了最基本的定义类之外,最主要就是因为面向的一些高级特性,运用这些高 ...

  4. PHP面向对象编程学习之对象基础

    php虽然是一门学习起来非常简单的语言,但是这门语言也包含了对面向对象编程的支持.尤其是随着php5的发布,php对面向对象的支持有了很大的进步.最近学习了一下php的面向对象编程,不禁感慨,面向对象 ...

  5. Python之面向对象编程学习

    不知不觉,学到了python的面向对象编程思想.今天我们来讨论下面向对象编程的思想. 顾名思义,面向对象,就是面向于对象,这里所说的对象不是你现实生活中你的女朋友,你的老婆,你的爱人,在编程的世界里面 ...

  6. 【我要学python】面向对象系统学习

    第一节:初识类的定义和调用 c1.py #类 = 面向对象 #类 最基本作用:封装 #类中不仅可以定义变量 还可以定义函数等等,例: class student( ): name = ' ' age ...

  7. JS面向对象编程学习

    学习目标:1.掌握JS中的类(原型对象)和对象.2.什么是成员变量和成员方法.3.掌握构造方法的使用.补充:关于双等号(==):1.如果等号两边都是字符串时,则比较内容是否相等2.如果等号两边是数字时 ...

  8. Python学习---面向对象的学习[基础]

    面向对象 面向对象的三大特性是指:封装.继承和多态. 说明: Python可以函数式编程,也可以面向对象编程 l 面向过程:根据业务逻辑从上到下写垒代码 l 函数式 :将某功能代码封装到函数中,日后便 ...

  9. Python学习---面向对象的学习[深入]

    类的深入学习    a. Python中一切事物都是对象     b. class Foo:             pass                obj = Foo()         # ...

  10. python面向对象编程学习

    python面向对象编程 基本概念理解 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作 ...

随机推荐

  1. IEnumerable.Select和SelectMany的区别

    例子(一个人可以有多个手机) public class People { public string Name { get; set; } public List<Phone> Phone ...

  2. ElasticSearch6.0 索引模板

    我们在做es搜索的场合,每次创建索引的时候,都需要为每个索引设置mapping的字段映射,现在我们可以为通用的索引创建一个模板 每次创建索引时候,如果匹配到相应的模板 索引的mapping会被自动设置 ...

  3. 2017北京赛区H题

    题目链接 题意:在n*m的矩阵中选择变换或者不变换一个数变成p,使得最大子矩阵和最小 1<=n,m<=150, -1000<=p<=1000; 题解: 他人题解链接 涉及到知识 ...

  4. Mac怎么安装Windows10

    当前  Windows10 系统的预览版已经出来,对于新系统感兴趣的不只是使用 PC 电脑的用户,还有一些是当前正在使用 Mac 系统的用户.其实安装 Windows 10 与以前安装 Windows ...

  5. About libcurl and cURL in PHP

    今天在学习php时遇到要调用curl 库函数对特定url字符串进行访问操作,需要自己写一个方法进行调用,之前在linux系统中也有用到cURL 命令行工具执行对相关资源的获取,在wiki上找到了如下的 ...

  6. Swift中的本地化实现

    1. 确保localization中添加了多语言2. 添加localisable.strings文件 3.选择这个文件,勾选多语言即可4.打开localisable.strings文件,添加一些测试字 ...

  7. css工具类封装

    温馨提示:一下css封装,建议按需使用,否则会造成很大的代码冗余,且很多样式会造成不符合预期的效果,建议合理使用 <a href="https://meyerweb.com/eric/ ...

  8. SEO中H1标签的用法- 1

    在网上找了很多关于H1标签对SEO意义的资料,不可否认H1对SEO具有重大的意义,但是具体情况每个人有每个人的见解吧.这里主要根据网上搜索的资料,以及自己的一些经验整理出来的,但是本人毕竟不是专业SE ...

  9. 菜鸟夜谈android反编译

    工具: apktool:https://code.google.com/p/android-apktool/ dex2jar: https://code.google.com/p/dex2jar/ j ...

  10. 批量归一化batch_normalization

    为了解决在深度神经网络训练初期降低梯度消失/爆炸问题,Sergey loffe和Christian Szegedy提出了使用批量归一化的技术的方案,该技术包括在每一层激活函数之前在模型里加一个操作,简 ...