PHP面向对象摘录
一、理解面向对象基础知识
面向对象的优势:
1、具有扩展现有代码的功能
2、允许类型提示,能够对传递给函数的变量进行更加严格的控制
3、允许使用现有的设计模式,可以用来解决常见的软件设计问题并使用调试更加容易
成员变量和成员方法:
public(公有的)表示其修饰的成员可以通过PHP程序全局访问 private(私有的)表示其修饰的成员仅可以被定义它的类访问 protected(受保护的)表示其修饰的成员仅可以被定义它的类及派生类访问 static(静态的)表示成员不会绑定到类的某一特定的实例,可以被类的任意实例访问 abstract(抽象的)抽象方法标志抽象类,必须定义类的所有子类加以实现 final(终态的)表示其修饰的成员无法在派生类中重新定义,因此它定义的功能无法修改 const(常量)将类内部的变量声明为常量,大写字母表示
魔术方法和常量 :
__CLASS__ :该值总是与定义的该调用函数的类名相同 __FILE__ :指常量所指向文件的文件名称 __LINE__:指输出代码中的位置行 __DIR__ :指文件所在的位置绝对目录 __FUNCTION__和__METHOD__ :指函数或方法所定义的名称 __NAMESPACE__ :指当前的命名空间 __constructor() :构造函数表示类被实例成对象时所调用的方法 --new关键字 __destructor() :析构函数表示对象被垃圾回收时调用的方法 --null或unset() __toString() :当对象被当作字符串输出时所调用的方法 __sleep():当对象被序列化时调用的方法 ,它返回一个数组,用来清理用保存的成员变量 __wakeup():当序列化的对象被唤醒时调用的方法 ,用来重新打开句柄 __set():当修改一个不存在的成员变量时调用的方法 __get(): 当调用一个不存在的成员变量时调用的方法 __unset(): 当销毁一个不存在的成员变量时调用的方法 __isset(): 当检测一个不存在的成员变量时调用的 方法 __call():当调用一个不存在的成员函数时调用的 方法 __callStatic():当调用一个不存在的静态方法时调用的 方法 __set_state():用来检查应用程序是否进行多次动态代码求值 var_export()调用时 __clone():当对象被克隆时调用的方法 __invoke():将对象作为函数使用时调用的方法
接口:
interface (接口)的含义
接口是用来定义功能的结构体
接口内的功能必须通过其他类来实现
接口并不会规定某个功能的内部实现,可以把借口看作类需要遵循的模版
接口是定义方法签名和返回值类型,所以类不是继承借口,而是实现接口implements
与类相关的一些关键字和函数:
new:实例化类为一个对象 instanceoof:表示左操作数的类型是右操作数的类型的子类则返回真 get_class():返回实例化对象的类名 serialize() :序列化对象,用来存储应用程序的状态及缓存全部对象 unserialize():反向序列化 将序列化过的对象返回成对象 var_export():输出或返回一个变量的结构信息以字符串表示,即PHP的源代码
设计模式:
Singleton(单例):表示类只能实例化一次,生成一个全局状态且单一根对象
Multiton(多例):表示类可以多次实例化,确保同一个对象的多个实例不会发生冲突
Proxy(代理):表示所有的成员方法和变量都来源于目标类,本类应用来记录访问信息
Facade(外观):抽象化复杂的功能,将子系统处理各请求的细节委托成合适的责任
Decorator(装饰者):表示对象实例化后,通过多个装饰者类来扩展实例化对象
Factory(工厂): 对象调用某一条件的方法时,依照判断条件来获取到子类的对象实例
Observer Pattern(观察者模式):当发布者对象生成事件后,观察者必须掌握广播了它的监听事件的对象
Publisher/subscriber(发布者/订阅者):当应用程序在何时何处触发时,都将订阅事件的通知
Lazy initialization(延迟初始化):表示真正需要该对象时才进行初始化
设计模式请看 : PHP设计模式
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 想让你多爱自己一些的开源计时器
· 大模型 Token 究竟是啥:图解大模型Token
· 用99元买的服务器搭一套CI/CD系统
· 当职场成战场:降职、阴谋与一场硬碰硬的抗争