优点:

1.方便代码维护,更人性化

2.方便代码扩展

3.

语法:

class 类名

{

  修饰词 属性名;

  修饰词 function 方法名("参数"(看情况而定可以不用传参))

  {

    内容;

  }

}

//实例化类

$object = new 类名;

$object->方法名("参数"(看你封装的方法是否有传参));

关键字:

final:子类无法重写被修饰的方法;

static:静态;被它修饰的属性可以直接使用,不用实例化类,eg:$user=Person::$name;(类中有一个static $name='张三';)有两种调用方式1."::",2."self"

__get():获取属性值;

__set():给属性赋值;

TYPE_CREDITCARD:常量,一旦定义之后值不会再改变;

extends:继承,子类可以直接使用父类的方法,优先级,子类高于父类,如果子类和父类的方法名相同,引用类的属性的时候回返回子类的属性值,方法也是

parent::父类被重写的方法,不能用"父类类名::被重写的方法";

self::method("方法名")();调用的是子类的方法();

interface:接口

implements 接口名,接口名...;实现继承多个接口

语法:

interface 名称

{

  function 方法名();

}

注意:这里没有属性和方法体

trait : 可以将多个类中,共用的一些属性和方法提取出来做来公共trait类,就像是装配汽车的配件,如果你的类中要用到这些配件,就直接用use导入就可以了,相当于把trait中的代码复制到当前类中.
因为trait不是类,所以不能有静态成员,类常量,当然也不可能被实例化。其实一个类中的代码,可以分为二大部分:一是我们自己写的代码,暂且叫私有代码吧,还有一部分就是公共代码了,

之前主要是由父类代码组成。现在你的类中的公共代码又多一个新成员:trait类代码。如果说:继承可以纵向扩展一个类,那么trait就是横向扩展一个类功能

eg:


<?php

trait Test1 {

public $name = 'PHP中文网'; //trait类中可以用属性

public function hello1() //trait类中主要成员是方法

{ return 'Test1::hello1()'; } } //2.创建triat类

Test2 trait Test2 { function hello2() { return 'Test2::hello2()'; } } //3.创建Demo1类

class Demo1 { use Test1, Test2; } //进行测试 $obj = new Demo1; echo $obj->hello1(); //访问trait类Test1中的

hello1() echo '<hr>'; echo $obj->name; //访问ttrait类

Test1中的$name属性 echo '<hr>'; echo $obj->hello2(); //访问ttrait类

Test1中的hello2()

注意:1.一个类中如果使用了多个trait回发生致命错误

  2.一个类中使用两个不同的trait中相同方法需要用as解决冲突

抽象类:

abstract关键字修饰,父类的抽象方法是只有方法名,没有方法体,子类必须实现父类抽象方法

注意:1.抽象方法只能在抽象类中,所以只有一个类中存在一个抽象方法就必须定义成抽象类

  2.抽象类不能直接实例化

构造函数:

__construct:初始化类属性的特殊函数

子类继承父类不会调用父类构造函数,需要在子类中显示调用:语法:父类名::__cunstruct();

析构函数:

__destruct():会在程序执行结束后调用

类检查:class_exists();

检查类是否在数组中:get_declared_classes()

得到类中属性和方法:get_calss_methods和get_class_vars

得到父类名称:get_parent_class()

判断方法是否存在:method_exists();

序列化:将一个对象转换成字节流,这样就可以将对象保存在文件中,这对于数据的持久化很有用

serialize():产生一个可存储的值的表示

注解:

返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。

这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。

当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数。

unserialize()

__sleep()在一个对象被序列化之前被调用,它能执行清理一些必要的清理工作,保持对象的状态

转载于:https://www.cnblogs.com/yinyusoso/p/8796171.html

PHP 的oop思想相关推荐

  1. java中oops是什么意思_什么是oop思想_什么是OOPS

    什么是oop思想 OOPS is a programming approach which provides solution to real life problems with the help ...

  2. 三分钟了解Java OOP思想

    Java OOP 思想深度刨析 Java面向对象编程 面向对象编程简称OOP(Object--对象.Oriendted--导向的.Programming--程序设计) 面向对象通俗来讲,就是指使用丰富 ...

  3. OOD知识---对OOA\OOD\OOP思想

            面向对象设计(Object-Oriented Design,OOD)方法是OO方法中一个中间过渡环节.其主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受.   ...

  4. Java基础 - 1 OOP思想

    (Object-Oriented Programming,OOP)//(面向对象编程,OOP) OOP是一种编程思想,OOP的基本原则是组合,由单个能够起到子程序作用的单元或对象组合而成,即面向对象编 ...

  5. Java面向对象编程的程序设计(OOP)思想

    文章目录 面向对象(oop) 封装 继承 多态 抽象类(abstract) 类型转化(instanceof) static关键字 面向对象(oop) 面向对象程序设计(Object Oriented ...

  6. 冒号课堂 编程范式与OOP思想

    上篇:编程范式与编程语言 第1课 开班导言 第2课 重要范式 第3课 常用范式 第4课 重温范式 第5课 语言小谈 第6课 语言简评 下篇:抽象机制与对象范式 第7课 抽象封装 第8课 抽象接口 第9 ...

  7. C++新手,用OOP思想编写的推箱子小游戏,请多赐教

    1.main函数 #include"Controller.h" void main() {  CController controller;  controller.Init(); ...

  8. 使用OOP思想二次封装echarts

    最近公司写几个报表模块,抽出空余时间简单的封装了一下.对原始的echarts进行二次封装.更方便维护.创建.管理: 源码地址 效果 1.文件目录说明 |-- echarts-extends|-- in ...

  9. 计算机编程oop思想与老子道德经之无有万物

    我们用虚拟的数字计算机来模拟宇宙万物的运行规律. 道,乃电子计算机之设计,之CPU,GPU,Registers,乃操作系统,这些都叫"无". 源代码,是为"有" ...

  10. OOP 思想在 TCC/APIX/GORM 源码中的应用

    动手点关注 干货不迷路 

最新文章

  1. 分享 14 个 Spring MVC 顶级技巧!
  2. luogu P3786 萃香抱西瓜
  3. HDU2608 0 or 1
  4. 4 关卡流 进阶_全息武器全解析,记住4个点全区第一就是你!
  5. 这种玩法闻所未闻,利用python编程自定义QQ的在线状态
  6. 使用keytool生成密钥对
  7. java完整JDBC操作数据库
  8. Atitit 工具选型的因素与方法 attilax总结
  9. Android MTK TP Driver 触屏驱动
  10. win7和手机共享文件和上网
  11. 毫米波雷达测距/测速原理介绍_小七自学笔记
  12. 这次跟大家聊聊技术,也聊聊人生
  13. 第一篇:零基础入门金融风控之风控指标体系清单
  14. 提高 Python 代码可读性的 5 个基本技巧
  15. asp毕业设计——基于asp+access的学生排课管理系统设计与实现(毕业论文+程序源码)——学生排课管理系统
  16. 怎么在手机上做文字长图?云便签可将文字生成长图并分享
  17. Win10C盘满了怎么清理?如何清理电脑C盘?
  18. iOS_Tagged Pointer是什么,结构
  19. 【登录及鉴权】-盘点那些主流的开源登录及权限认证框架 (上)
  20. python解析xml生成代码_python:有没有实现为生成器的XML解析器?

热门文章

  1. 软件工程——软件开发步骤
  2. android自动适应横屏,Android屏幕适配(一)--自定义View屏幕适配
  3. react + better-scroll 横向滚动案例
  4. matlab 指定ccs编译器,在CCS5.5中导入CCS3.3工程——指定编译器和修改prj文件
  5. PS--解决文字不清晰问题
  6. php文字下划线,如何在文字下面添加下划线
  7. ppt太大怎么变小,ppt如何压缩变小
  8. selenium chromedriver 无头浏览器检测
  9. [转]如何在NIOS II中读写EPCS剩余空间
  10. java byte 文件大小_java byte文件大小