在php编程中,static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”

如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号“::”调用。

static关键字可以用来修饰变量、方法。

不经过实例化,就可以直接访问类中static的属性和static的方法。

static 的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用。

static的属性,在内存中只有一份,为所有的实例共用。

使用self:: 关键字访问当前类的静态成员。

一个类的所有实例,共用类中的静态属性。

即在内存中即使有多个实例,静态的属性也只有一份。

例子,设置了一个计数器$count属性,设置private 和 static 修饰。

这样,外界并不能直接访问$count属性。而程序运行的结果也看到多个实例在使用同一个静态的$count 属性。

二,静态属性直接调用

静态属性不需要实例化就可以直接使用,在类还没有创建时就可以直接使用。

使用方式:

类名:: 静态属性名

类没有创建,静态属性就可以直接使用。那静态属性在什么时候在内存中被创建?

在php中没有看到相关的资料。

引用java中的概念,来解释应该也具有通用性。静态属性和方法,在类被调用时创建。

静态方法不需要所在类被实例化就可以直接使用。

使用的方式是类名::静态方法名

继续写这个math类,用来进行数学计算。

设计一个方法用来算出其中的最大值。既然是数学运算,也没有必要去实例化这个类,如果这个方法可以拿过来就用就方便多了。

这只是为了演示static方法而设计的这个类。在php提供了 max() 函数比较数值。

静态方法如何调用静态方法

第一个例子,一个静态方法调用其它静态方法时,使用self::

静态方法调用静态属性

使用self:: 调用本类的静态属性。

静态方法不能调用非静态属性 。不能使用self::调用非静态属性。

也不能使用 $this 获取非静态属性的值。

静态方法调用非静态方法

php5中,在静态方法中不能使用 $this 标识调用非静态方法。

当一个类中有非静态方法被self:: 调用时,系统会自动将这个方法转换为静态方法。

以上这篇浅析php静态方法与非静态方法的用法区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

php 静态方法特点,浅析php静态方法与非静态方法的用法区别相关推荐

  1. php中静态方法有什么作用,PHP中的静态方法与非静态方法有什么不同吗?

    除此之外,如果您尝试在您的方法中使用$this,如下所示: class t { protected $a = 10; public function tt() { echo $this->a; ...

  2. Java静态方法调用非静态方法

    静态方法(static mehod)不能直接调用非静态方法(non-static method),可以通过一个对象的引用传入静态方法中,再去调用该对象的非静态方法.在主函数(static方法)中,经常 ...

  3. static(静态方法中)如何调用非静态方法?

    在静态方法的内部不能直接调用非静态方法,因为方法属于类而不是对象,我们可以通过自己手动new对象来在静态方法中调用 简单case: 如下代码设置Build类一个静态方法一个成员方法 public cl ...

  4. 静态方法与非静态方法的相互调用

    静态方法是属于类的,随着类的加载而加载的,在加载类时,程序就会为静态方法分配内存. 非静态方法是属于对象的,对象是在类实例化之后创建的. 静态方法先于对象存在,可以这样理解,静态方法是首先存在的,而非 ...

  5. 静态方法与非静态方法的区别

    使用static修饰的静态方法是属于整个类的类方法,它在内存中的代码段会随类的定义而被分配和装载:而非静态方法是属于具体对象的方法,当这个对 象创建时,在对象的内存中会拥有此方法的专用代码段.在引用静 ...

  6. 静态方法和非静态方法的区别

    使用static修饰的静态方法是属于整个类的类方法,它在内存中的代码段会随类的定义而被分配和装载:而非静态方法是属于具体对象的方法,当这个对 象创建时,在对象的内存中会拥有此方法的专用代码段. 在引用 ...

  7. 静态方法 与 非静态方法的区别/static 关键字

    为什么80%的码农都做不了架构师?>>>    使用static修饰的静态方法是属于整个类的类方法,它在内存中的代码段会随类的定义而被分配和装载:而非静态方法是属于具体对象的方法,当 ...

  8. synchronized(this)锁的是什么?同步静态方法,同步非静态方法,锁的都是什么?

    1.普通同步方法,是实例锁,锁是当前实例对象. 不同的实例对象调用非静态同步方法不存在竞争关系,同一个实例对象调用非静态同步方法时存在竞争关系.注意这里是类的当前实例, 类的两个不同实例就没有这种约束 ...

  9. 静态方法和非静态方法区别?

    静态方法static(类方法)和 非静态方法(实例方法)的区别: 方法我们主要分为三种: 1.构造方法 2.静态方法(类方法) 3.非静态方法(普通方法/实例方法/成员方法) 对于1(补充一下):构造 ...

最新文章

  1. python 打开网页、封装自己的浏览器、制作浏览器、打开麦克风和摄像头、忽略ssl证书错误、置顶、无边框
  2. ebpf 学习-bpftrace 语法 入门
  3. 【Windows 10 应用开发】使用快捷访问键
  4. 电缆桥架的拉挤玻璃钢材质优势
  5. Linux的实际操作:任务调度基本说明
  6. java某个时间推迟60天_java计算两个时间相差(天、小时、分钟、秒)
  7. 我帮公司财务写了个“群发工资条”的Python脚本!
  8. 统计两个IP地址之间的IP个数
  9. cocos2d-x游戏引擎核心(3.x)----事件分发机制之事件从(android,ios,desktop)系统传到cocos2dx的过程浅析...
  10. C语言程序设计--教师信息管理系统
  11. 模拟滑动窗口协议算法C语言,滑动窗口协议模拟程序.docx
  12. 2013年 macbookair bootcamp 安装win10双系统
  13. IE编程1(.net)——读取IE窗口信息
  14. linux进阶52——pthread_cond_t
  15. 十大领域五大过程组(上):你必须了解的项目管理常识
  16. 机器学习(1):独立同分布IID(independent and identically distributed)
  17. 写论文时,参考文献怎么引用?
  18. photoshop cs5 基础教程 直接选择工具
  19. 报表模板哪里有?在线报表系统可以下载
  20. 暨南大学计算机复试线2019,2019暨南大学考研复试分数线

热门文章

  1. Linux 引导管理器 grub2 使用简介
  2. Tech·Ed 2009
  3. pytorch如何定义损失函数_对比PyTorch和TensorFlow的自动差异和动态模型
  4. 批改网禁止粘贴怎么破_教育部对家长批改作业表态了,明令禁止!你怎么看?...
  5. python pool_派松水潭(Python Pool)
  6. python加密模块教程_Python加密模块的hashlib,hmac模块使用解析
  7. java web 保护_java web项目请求控制及简单漏洞防范
  8. 十年总结,一个JAVA人的十年人生路
  9. wps完成率怎么设置_WPS表格中如何计算完成率?详细操作方法看这里!
  10. c#中 uint_C#中的uint关键字