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,面向对象思想介绍的更多相关文章

  1. linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-110738.html linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想 xxxxxx ...

  2. 2017.12.25 Java中面向对象思想的深刻理解

    今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 * A: 面向过程与面 ...

  3. 【Linux开发】linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想

    linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  4. linux设备驱动归纳总结(三):3.设备驱动面向对象思想和lseek的实现【转】

    本文转自自:http://blog.chinaunix.net/uid-25014876-id-59418.html linux设备驱动归纳总结(三):3.设备驱动面向对象思想和lseek的实现 一. ...

  5. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

  6. C#基础知识-面向对象思想之继承(八)

    上一篇的标题编程思想我觉得不是很符合主题,因为编程思想的范围太大了,不仅仅是封装 继承 多态,所以比较符合主题的应该是面向对象思想.这一篇中将继续叙述面向对象思想中的继承. 从字面来看继承表达的意思已 ...

  7. JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块

    JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买 ...

  8. JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想

    JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好 ...

  9. 第一节:从面向对象思想(oo)开发、接口、抽象类以及二者比较

    一. 面向对象思想 1. 面向过程(OP)和面向对象(OO)的区别: (1):面向过程就是排着用最简单的代码一步一步写下去,没有封装,当业务复杂的时候,改动就很麻烦了 (2):面向对象将复杂的业务分离 ...

随机推荐

  1. 单片机BootLoader

    http://bbs.elecfans.com/jishu_467138_1_1.html 作用:app程序,固件程序升级

  2. HDFS中NameNode和Secondary NameNode工作机制

    NameNode工作机制 0)启动概述 Namenode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作.一旦在内存中成功建立文件系统元数据的映像,则创建一个 ...

  3. Developer Express 第三方控件使用系列方法

    本人目前从事的开发工作主要是以C#语言进行的相关C/S的开发,在工作中也要求使用Developer Express第三方控件所以这一系列的控件使用说明都将以C#语言进行代码说明.平时工作中会慢慢的收集 ...

  4. 【数据库运维】数据库(server)的时区设置及世界主要地区的时区

    [时区设置不当会有什么问题] 当进行海外项目运维的时候,常常会遇到时区设置的问题.假设时区设置不当 或者 同样项目的server之间的时区不一致,都会有导致项目的数据异常的风险. 假设数据表的字段使用 ...

  5. html表格单元格添加斜下框线的方法

    一.分隔单元格的方法 1.用“transform: rotate(-55deg);”把一条水平线旋转一定角度就成斜线了 2.利用以下命令调整分割线位置等. :after :before transfo ...

  6. django信号相关

    Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 1.Django内置信号 Model signals pre_in ...

  7. 浏览器是怎样工作的:渲染引擎,HTML解析(连载二)

    转载自:http://ued.ctrip.com/blog/how-browsers-work-rendering-engine-html-parsing-series-ii.html 渲染引擎 渲染 ...

  8. java操作mongodb工具类

    新建maven项目 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...

  9. wordpress系统网站访问慢的解决方案

    从2013年5月底开始,google在中国基本处于无法访问状态,谷歌官网 域名,香港域名均无法访问,就连之前的IP访问方法也都失效,而Google Adsense打不开,恐怕做谷歌联盟的站长也要倒霉了 ...

  10. spring boot generator

    pom.xml 插件引用依赖 <build> <plugins> <plugin> <groupId>org.springframework.boot& ...