1.面向对象【一种编程思想,并不表示比面向过程天生高端,实质上是一种更好扩展维护的编程思想】 【编程思想本身没有高下之分,但是会有个选择的过程】

面向过程:将一个业务逻辑拆分成各个过程,分别实现各个过程,从而实现业务逻辑的思想就是面向过程。 【面向过程的问题:对业务整体逻辑的抽象化一直存在。面向过程是一个动作的罗列。但是面向对象则是主体的描述。所以面向过程不可能完全描述业务逻辑】 实质上面向对象更加切合现实生活【通过主体的控制】 以上是本质上的区别和选择。【如何为了切合现实生活的话,面向过程需要重复定义太多的主体。这也是面向对象冗余的原因】

所以面向对象是一种希望计算机更好的模拟现实的一种编程思想【而且因为主体进行模拟逻辑,所以好处就在于针对每一个对象进行模块然后分别进行调用业务,从而实现更好的分离和模块】 所以面向对象是解决复杂逻辑和项目的唯一出路。 【这才是面向对象重要的原因:将现实的实体隐射到计算机编程语言中,就是面向对象的实践】

2.基本语法 对象对应于现实实体在计算机中的一个抽象。 对象通过类实例化来实现【对象的来源】 类是一类事物的抽象【因为对象很少出现孤立的形象,都是基于一类型事物的特例(重写类中属性的对象)或者实例(单纯实例)就是对象】

语法: 首先声明一个类 class 类名{}//在定义类时使用属性和方法进行控制【成员】 对象 = new 类名;//实现实例化,输出之后只有属性列表,没有方法的信息【不论可见性】 //每次实例化一次类,都会创建一个对象(会开辟一个新的空间来保存该对象,所以不同的实例对象之间的操作互不影响)(在输出对象var_dump会输出对象的不同) //针对对象的操作才是主体的操作【也是面向对象的主要编程】【由于有需要针对对象的操作,所以需要使用对象成员的访问:访问关键(可见性和访问的不同方式)】

【在类外进行成员的访问】 访问属性:对象->属性名; 访问方法:对象->方法名(); 【如何在类中的方法中访问这个对象的成员】 this关键字来指代当前对象才能够访问该成员【因为在类中的方法中也是局部作用域】 $this->成员;//$this本身也是一个局部作用域变量,但是php机制会将this指代到执行该方法调用的对象 【在方法内调用了对象的成员并且改变之后,会在整个对象存活期间内都是全局作用(只要调用该值,该值便显示改变之后的)。因为对象的属性在对象上时全局的作用】 【正是因为这样的机制,使得面向对象编程在处理数据方面能够更好的模拟现实中的主体】【重点】

类中成员的可见性【public/protected/private】

【这是基本的面向对象的概念】

3.构造函数【__construct】 【实例化类时被调用】 对象的初始化【将对象的属性进行初始化工作】 用于每一个类中的属性公共要使用的情况进行初始化,省去很多工作。【但是不能滥用】 【在对象中作为标记】【或者公共使用的数据才会被放在构造函数中进行初始化】 【这里的初始化工作需要的参数是在实例化过程中使用new关键字时传入相关参数进行实例化即可。构造函数的初始化工作就针对这些参数处理即可】

其余的类中所需的属性只需要在该类中进行定义即可【而不是定义在构造函数中】

另外在类中方法名和类名一样的方法也起构造方法的作用 【但是优先级有问题。两种情况都存在时,构造函数还是使用__construct进行构造函数的作用。有可能出现冲突(完全杜绝在类中使用与类名一致的方法)】

【现实中的实例】 构造函数在公司的实例中只是用于初始化相关城市的信息【其余关于缓存等属性都放在父类中,用于子类继承】

4.析构函数【__destruct】 【对象销毁时进行调用该方法】 对象被销毁【unset】之后,其实对象占用的资源没有被销毁。所以析构函数被用来销毁额外的资源。【节省资源】 但是销毁对象的这个操作本身就不太被使用。

对象被销毁的时机: (1)用户脚本结束后,所有的资源包括对象会被销毁【此时会触发,但是没有意义】 (2)unset对象 (3)将保存当前对象的变量赋值能其他值【也会触发】(即使是重新赋值本身对象也会触发)

【问题】 是否是因为mysql连接这样的资源能够保留下来,所以单例的模式的应用场景?

已经解决:

单例的实现场景就是针对面向对象中组织一个脚本中的多个引入情形时,会带来对数据库的重复实例化【因为我们即使在现实工作中,也是有出现过遇到取用数据时,就进行一次实例化的操作(在compontent中经常会在一个方法中实例多个接口,也是这个问题)】

现实中的单例模式,需要使用的就是针对一个脚本进程中可以进行共享static属性进行连接判断是否是实例对象,如果不是,则进行创建

以上就是单例的实现逻辑

转载于:https://www.cnblogs.com/shuoshuren/p/4213948.html

php面向对象、语法【访问成员的情形:外和方法内调用对象的关键字this】、构造函数的场景和析构函数的场景...相关推荐

  1. javascript数组——新建数组、访问数组、遍历数组的方法、数组对象的方法、冒泡排序算法、json的正反序列化

    目录 数组 通过构造函数的三种方法 字面量创建数组方式 访问数组 遍历数组的方法 遍历:遍历就是把数组中的元素从头到尾都访问一次 操作数组对象的方法 删除和添加 delete与Vue.delete区别 ...

  2. C++学习笔记(十)成员变量和成员函数分开存储、this指针、空指针访问成员函数、const修饰成员函数、友元

    1.成员变量和成员函数分开存储 //1.在C++中,类内的成员变量和成员函数分开存储 //2.只有非静态成员变量才属于类的对象上 //空对象占用内存空间为:1 //C++编译器会给每个空对象也分配一个 ...

  3. Java通过反射访问成员变量

    通过下列任意一个方法访问成员变量时将返回 Field 类型的对象或数组. getFields()getField(String name)getDeclaredFields()getDeclaredF ...

  4. JAVA面向对象OOP→构造方法、this、访问修饰符、static、方法重载、JVM内存分配、GC垃圾回收、包、样例代码

    构造方法 构造方法(constructor):与类名同名,没有返回值 其初始化作用:一为属性分配内存空间.二为属性赋值 构造方法不能自己调用,只能通过new实例化对象调用 隐式构造方法:对象实例化时编 ...

  5. JavaScript基础语法_JavaScript内置对象

    JavaScript内置对象 JavaScript中的对象分为3种:自定义对象,内置对象,浏览器对象 前两种对象是JS基础内容,属于ECMAScript;第三个浏览器对象属于js独有 内置对象就是指J ...

  6. C++模板学习02(类模板)(类模板语法、类模板与函数模板的区别、类模板中的成员函数创建时机、类模板对象做函数参数、类模板与继承、类模板成员函数类外实现、类模板分文件编写、类模板与友元)

    C++引用详情(引用的基本语法,注意事项,做函数的参数以及引用的本质,常量引用) 函数高级C++(函数的默认参数,函数的占位参数,函数重载的基本语法以及注意事项) C++类和对象-封装(属性和行为作为 ...

  7. iOS - OC 面向对象语法

    1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...

  8. 面向对象语法1—基础

    一.面向对象和面向过程的区别 1.以用电脑听歌为例子 1>面向过程:打开电脑-->播放在电脑中得歌曲-->关闭电脑睡觉 2>而面向对象就是找到电脑这个对象,电脑对象有开机,播放 ...

  9. python面向对象生动讲解_Python面向对象语法精讲

    本专题的内容结构: 第一部分主要是:面向对象基础 第二部分主要是:面向对象进阶 第一部分的结构: unit1:面向对象编程模式: (1),面向对象编程思想 (2),面向对象的三个特征 (3),Pyth ...

  10. python面向对象类的成员_Python面向对象中类的成员

    Python面向对象中类的成员总共有三种,分别是字段.方法和属性 Python Version: 3.5+ 字段 普通字段1 2 3 4 5 6 7 8class A: def __init__(se ...

最新文章

  1. java独立承担,Java使用独立文件服务器
  2. 自适应高度Textarea
  3. cmd安装linux服务器,cmdbuild安装
  4. 路由器ospf动态路由配置
  5. 关于std::thread以及std::condition_variable的一些细节备忘
  6. oracle数据库中sql%notfound的用法
  7. java中线程调度遵循的原则_Java 多线程(三) 线程的生命周期及优先级
  8. eNSP检测不到网卡信息——WinPacp
  9. 苹果损失超 1000 万美元,前员工被控收回扣、盗窃、欺诈
  10. php依赖注入 简书,依赖注入
  11. 如何修改默认的site template大小
  12. JVM·垃圾收集器与内存分配策略之对象是否可被回收!
  13. HTML怎么消除链接下划线,HTML怎么去掉超链接的下划线
  14. 虚幻引擎4(UE4)的基本操作Actor的操作
  15. 熟悉RealView MDK集成开发环境(Keil uVision4)的使用
  16. 1.面试题目汇总-嵌入式篇
  17. linux 命令:ping、fping、gping、hping3、tracert、traceroute
  18. Linux搭建下载机(Deluge/BT)
  19. android开源项目---View篇
  20. 淘宝客推广五大实战技巧

热门文章

  1. 如何做到“对扩展开放、修改关闭”?
  2. Windows核心编程_PE文件格式解析
  3. PTA-基础编程题目集-7-2 然后是几点
  4. 精彩回顾|DBDI 数据智能技术研讨沙龙(杭州站)顺利举办
  5. 如何通过“限制管理权限”来保护您的企业?
  6. 前段之路心得——(1)
  7. NodeJs 实现 WebSocket 即时通讯(简单版)
  8. Python 安装 lxml 插件
  9. webstorm怎样查找历史记录
  10. 94-《纪元2205》游戏体会.(2015.11.12)