16/8/21_PHP-有关类函数,this,static,面向对象思想介绍
class_exists():判断某个类是否存在(定义过)
interface_existe():判断接口是否存在
get_class():获取某个对象的"所属类名"
get_parent_class():获取某个对象的"所属父类的类名"
get_class_method():获取一个类的所以方法,返回一个索引数组,就是这些方法的名字。
get_class_vars():获取一个类的所有属性,返回一个数组,下标为属性名,值为属性值。
get_declared_classes():获得所有声明的类(含系统中的类)
is_object():判断是否对象
get_object_vars():获得对象的所有属性,返回一个数组,下标为属性名,值为属性值。
instanceof:判断一个对象是否是某个类的"实例"
一个对象如果是下级某个类的“实例”,则其一定也是该类的上级类的“实例”
两个特定语法场景的辨析
对象向下传递特性:
当一个对象($object1)调用一个实例方法,然后,在该方法(A)中又去“静态”调用另一个类的方法(B),则在方法中B中,会自动获得在方法A中的那个this对象。
self:代表当前类,指其代码所在的类(静态绑定)
static:也代表“当前类”,调用本方法的类,static这个词有时候跟self代表用一个类,也有时候代表不用的类,
static代表的是调用者(动态绑定),通常认为,这种情形更符合显示的需要,可见self完全可以被static代替使用。
可见static有3个不同含义的语法:
函数中的静态变量:
function f1(){
static $var1 = 1;
}
类中的静态成员:
class A{
static $var1 = 1;
static function f1(){}
}
方法中的动态指代“当前类”:
class A{
function f1(){
static::f2();//static指代调用f1这个方法的类(或对象的类)
self::f2()//self这里永远指代当前A这个类
}
}
面向对象3大思想特征介绍:
封装:
就是把数据“封闭”起来,尽量不给别人看到。
面向对象的基本语法“类的定义”形式,可以认为是最基本封装--封装了很多数据到某个类(对象)。
但:
更严格(更常说)的封装,是尽量将属性做出“私有的”--并通过共有的方法向外提供对该属性的“可控性”:
继承:
多态:
通常是指:一个对象可以使用相同的方法(动作)但得到不同的结果:
(这里是其他常见面向对象语法示例:)
class A{
function f1($x){...做事情1;}
function f1($x,$y){...做事情2;}
function f2($x,$y,$z){...做事情3;}
}
也指:不用的对象使用相同的方法,但得到不同的结果:
16/8/21_PHP-有关类函数,this,static,面向对象思想介绍的更多相关文章
- linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-110738.html linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想 xxxxxx ...
- 2017.12.25 Java中面向对象思想的深刻理解
今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 * A: 面向过程与面 ...
- 【Linux开发】linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想
linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- linux设备驱动归纳总结(三):3.设备驱动面向对象思想和lseek的实现【转】
本文转自自:http://blog.chinaunix.net/uid-25014876-id-59418.html linux设备驱动归纳总结(三):3.设备驱动面向对象思想和lseek的实现 一. ...
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- C#基础知识-面向对象思想之继承(八)
上一篇的标题编程思想我觉得不是很符合主题,因为编程思想的范围太大了,不仅仅是封装 继承 多态,所以比较符合主题的应该是面向对象思想.这一篇中将继续叙述面向对象思想中的继承. 从字面来看继承表达的意思已 ...
- JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块
JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买 ...
- JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想
JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好 ...
- 第一节:从面向对象思想(oo)开发、接口、抽象类以及二者比较
一. 面向对象思想 1. 面向过程(OP)和面向对象(OO)的区别: (1):面向过程就是排着用最简单的代码一步一步写下去,没有封装,当业务复杂的时候,改动就很麻烦了 (2):面向对象将复杂的业务分离 ...
随机推荐
- Java-集合第六篇操作集合的工具类Collections
1.Java提供了一个操作Set.List.Map等集合的工具类:Collections. 工具类中提供的方法主要针对Set.List.Map的排序.查询.修改等操作,以及将集合对象设置为不可变.对集 ...
- 离线安装 Cloudera ( CDH 5.x )(转载)
要配置生产环境前,最好严格按照官方文档/说明配置环境.比如,官方说这个安装包用于RETHAT6, CENTOS6,那就要装到6的版本下,不然很容易出现各种各样的错. 配置这个CDH5我入了很多坑: C ...
- Version Controlling with Git in Visual Studio Code and Azure DevOps
Overview Azure DevOps supports two types of version control, Git and Team Foundation Version Control ...
- 采用pacemaker+corosync实现postgresql双机热备、高可用方案
环境说明 参照上章已完成postgresql流复制配置,并关闭postgres服务. su - postgres pg_ctl -D /data/postgresql/data/ stop -m fa ...
- Tcp客户端构建流程
tcp客户端构建流程 tcp的客户端要比服务器端简单很多,如果说服务器端是需要自己买手机.查手机卡.设置铃声.等待别人打电话流程的话,那么客户端就只需要找一个电话亭,拿起电话拨打即可,流程要少很多 示 ...
- linux相关认证和权限配置
[root@rsync-server-1 /]# echo 'rsync_backup:redhat' > /etc/rsync.password [root@rsync-server-1 /] ...
- 求助:关于shell数值比较的错误提示
今天写了个脚本,过不了错误这一关,求大神路过瞟一眼. 1 #!/bin/bash 2 #disk use 3 disk_use() { 4 DISK_LOG=/tmp/disk_use.tmp 5 D ...
- more 分页显示文件内容
1.命令功能 more 分页显示文件内容 2.语法格式 more option file 参数说明 参数 参数说明 -num 指定屏幕显示大小为num行 +num 从行号num号开始显示 -s 把连 ...
- hInstWtsapi32 = LoadLibrary("Wtsapi32.dll");
https://www.cnblogs.com/beawesome/p/6473668.html 进程枚举 之类
- java.util.Date 与 java.sql.Date 相关知识点解析
问:java.sql.Date 和 java.util.Date 有什么区别? 答:这两个类的区别是 java.sql.Date是针对 SQL 语句使用的,它只包含日期而没有时间部分,一般在读写数 ...