php中,静态方法可以使用self关键词来调用非静态变量,例“self::$name”;一个方法被“self::”后,它就自动转变为静态方法。注:静态方法不能调用非静态属性;因为非静态属性需要实例化后,存放在对象里。

推荐:《PHP视频教程》

PHP中静态(static)调用非静态方法详解

这里分析了php面向对象中static静态属性和静态方法的调用。关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了。静态属性、方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性)。

实例:<?php

header("content-type:text/html;charset=utf-8");

class Human{

static public $name = "小妹";

public $height = 180;

static public function tell(){

echo self::$name;//静态方法调用静态属性,使用self关键词

//echo $this->height;//错。静态方法不能调用非静态属性

//因为 $this代表实例化对象,而这里是类,不知道 $this 代表哪个对象

}

public function say(){

echo self::$name . "我说话了";

//普通方法调用静态属性,同样使用self关键词

echo $this->height;

}

}

$p1 = new Human();

$p1->say();

$p1->tell();//对象可以访问静态方法

echo $p1::$name;//对象访问静态属性。不能这么访问$p1->name

//因为静态属性的内存位置不在对象里

Human::say();//错。say()方法有$this时出错;没有$this时能出结果

//但php5.4以上会提示

?>

1、静态属性的调用,用self:: ,无论是静态或非静态方法都可以调用静态属性;结论:

2、静态方法可以调用非静态方法,使用 self 关键词。php里,一个方法被self:: 后,它就自动转变为静态方法;

3、静态方法不能调用非静态属性。因为非静态属性需要实例化后,存放在对象里;

php静态方法调用变量吗,php静态方法怎么调用非静态变量?相关推荐

  1. 静态变量(类变量)和非静态变量(成员变量、实例变量)的区别

    由static修饰的变量称为静态变量,其实质上就是一个全局变量.如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰:没有被静态修饰的内容,其实是属于对象的特殊描述. 不同的对象的实例变量将被分 ...

  2. JAVA错误:无法从静态上下文中引用非静态变量 this

    新学习:构造方法的重载,给成员变量赋值 错误代码: class Student {public static void main(String[] args) {Person p = new Pers ...

  3. matlab静态变量怎样分配内存,matlab中的静态变量

    persistent X Y Z 将X,Y,Z定义为在其声明处的函数的局部变量.然而,这些变量的值在函数调用期间在内存中保存(应该是堆区).Persistent 变量和global(全局)变量相似,因 ...

  4. 静态变量与非静态变量的区别

    静态变量的类型说明符是static,非静态变量反而类型说明符就不是static了.本文主要介绍静态和非静态变量的区别,希望对你有帮助,一起来看. AD: 静态变量:静态变量使用 static 修饰符进 ...

  5. Java非静态变量给静态变量赋值

    @Value注解介绍: 作为Spring的一个常用注解,其作用是通过注解将常量.配置文件中的值和其他bean的属性值注入到变量中,作为变量的初始值. @Value("${login.name ...

  6. C#静态变量和非静态变量的区别

    静态变量: •静态变量使用 static 修饰符进行声明 •在所属类被装载时创建 •通过类进行访问 •所属类的所有实例的同一静态变量都是同一个值 •非静态变量: •不带有 static 修饰符声明的变 ...

  7. java 静态变量和非静态_Java中静态和非静态变量之间的区别

    变量为我们提供了程序可以操纵的命名存储.Java中的每个变量都有一个特定的类型,该类型确定变量的内存大小和布局.可以存储在该内存中的值的范围:以及可以应用于该变量的一组操作. 静态变量 静态变量也称为 ...

  8. java静态方法调用非静态变量_[java]静态方法访问非静态方法的方法

    是不是是有点拗口哈,在刚开始的开发中,经常会碰到"无法访问非静态方法",如下: Test.java public Test{ public void notStatic(){ Sy ...

  9. c语言查看变量类型_c语言外部链接的静态变量的四种类型

    体系结构计划 外部链接的静态变量具有文件作用域.外部链接和静态存储期.该类别有时称为外部存储类别(external storage class),属于该类别的变量称为外部变量(external var ...

最新文章

  1. 基于TensorRT的BERT实时自然语言理解(下)
  2. Oracle的分区操持
  3. php函数scandir_使用PHP函数scandir排除特定目录
  4. 史丹利谋定跨国合作-万祥军:对话国际农民丰收节贸易会
  5. 小米8 android9手势,当小米8SE遇到安卓9.0,体验提升一个等级!
  6. 通过JS控制textarea的输入长度
  7. 我说CMM2.0之:风险与机会管理
  8. 中国港口年鉴(2000-2020年)
  9. 网络安全策略防御加固
  10. 检测字符串是否位于另一个字符串尾端
  11. 国产系统UOS开机进入initramfs命令行怎么办
  12. Java———猴子偷桃(递归函数)
  13. 知晓云深坑:获取不到数据
  14. 我参加第七届NVIDIA Sky Hackathon——训练CV模型
  15. solaris 安全设置
  16. 安卓中的BP、AP、NV是什么意思?
  17. C primer plus第二章读书笔记3
  18. PDF 中图片的提取
  19. (转)VB程序逆向反汇编常见的函数
  20. 集美大学计算机专业属a类吗,集美大学是不是双一流大学,2020那些是一流大学和一流学科?...

热门文章

  1. 无论是舆论风波,还是实力较量,BCH从来就没有怕过
  2. RBL, UBL, Uboot的关系
  3. 巧妙启用Windows 2003的远程桌面
  4. VS 2019要来了,是时候了解一下C# 8.0新功能
  5. Python之面向对象进阶
  6. LAMP环境搭建与测试
  7. 9大跨平台移动 App 开发工具推荐
  8. 注入式开发(二):.NET 匿名函数
  9. Java IO 总结图
  10. (总结)RHEL/CentOS 7.x的几点新改变