php静态方法调用变量吗,php静态方法怎么调用非静态变量?
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静态方法怎么调用非静态变量?相关推荐
- 静态变量(类变量)和非静态变量(成员变量、实例变量)的区别
由static修饰的变量称为静态变量,其实质上就是一个全局变量.如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰:没有被静态修饰的内容,其实是属于对象的特殊描述. 不同的对象的实例变量将被分 ...
- JAVA错误:无法从静态上下文中引用非静态变量 this
新学习:构造方法的重载,给成员变量赋值 错误代码: class Student {public static void main(String[] args) {Person p = new Pers ...
- matlab静态变量怎样分配内存,matlab中的静态变量
persistent X Y Z 将X,Y,Z定义为在其声明处的函数的局部变量.然而,这些变量的值在函数调用期间在内存中保存(应该是堆区).Persistent 变量和global(全局)变量相似,因 ...
- 静态变量与非静态变量的区别
静态变量的类型说明符是static,非静态变量反而类型说明符就不是static了.本文主要介绍静态和非静态变量的区别,希望对你有帮助,一起来看. AD: 静态变量:静态变量使用 static 修饰符进 ...
- Java非静态变量给静态变量赋值
@Value注解介绍: 作为Spring的一个常用注解,其作用是通过注解将常量.配置文件中的值和其他bean的属性值注入到变量中,作为变量的初始值. @Value("${login.name ...
- C#静态变量和非静态变量的区别
静态变量: •静态变量使用 static 修饰符进行声明 •在所属类被装载时创建 •通过类进行访问 •所属类的所有实例的同一静态变量都是同一个值 •非静态变量: •不带有 static 修饰符声明的变 ...
- java 静态变量和非静态_Java中静态和非静态变量之间的区别
变量为我们提供了程序可以操纵的命名存储.Java中的每个变量都有一个特定的类型,该类型确定变量的内存大小和布局.可以存储在该内存中的值的范围:以及可以应用于该变量的一组操作. 静态变量 静态变量也称为 ...
- java静态方法调用非静态变量_[java]静态方法访问非静态方法的方法
是不是是有点拗口哈,在刚开始的开发中,经常会碰到"无法访问非静态方法",如下: Test.java public Test{ public void notStatic(){ Sy ...
- c语言查看变量类型_c语言外部链接的静态变量的四种类型
体系结构计划 外部链接的静态变量具有文件作用域.外部链接和静态存储期.该类别有时称为外部存储类别(external storage class),属于该类别的变量称为外部变量(external var ...
最新文章
- 基于TensorRT的BERT实时自然语言理解(下)
- Oracle的分区操持
- php函数scandir_使用PHP函数scandir排除特定目录
- 史丹利谋定跨国合作-万祥军:对话国际农民丰收节贸易会
- 小米8 android9手势,当小米8SE遇到安卓9.0,体验提升一个等级!
- 通过JS控制textarea的输入长度
- 我说CMM2.0之:风险与机会管理
- 中国港口年鉴(2000-2020年)
- 网络安全策略防御加固
- 检测字符串是否位于另一个字符串尾端
- 国产系统UOS开机进入initramfs命令行怎么办
- Java———猴子偷桃(递归函数)
- 知晓云深坑:获取不到数据
- 我参加第七届NVIDIA Sky Hackathon——训练CV模型
- solaris 安全设置
- 安卓中的BP、AP、NV是什么意思?
- C primer plus第二章读书笔记3
- PDF 中图片的提取
- (转)VB程序逆向反汇编常见的函数
- 集美大学计算机专业属a类吗,集美大学是不是双一流大学,2020那些是一流大学和一流学科?...