资讯专栏INFORMATION COLUMN

php中static静态属性和静态方法的调用

Flands / 3414人阅读

摘要:本文介绍面向对象中静态属性和静态方法的调用实例分析了静态属性和静态方法的原理与调用技巧需要的朋友可以参考下。简介这里分析了面向对象中静态属性和静态方法的调用。因为静态属性存放的位置是在类里,调用方法为类名属性名静态方法不需要实例化即可调用。

本文介绍php面向对象中static静态属性和静态方法的调用,实例分析了static静态属性和静态方法的原理与调用技巧,需要的朋友可以参考下。

简介

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

示例
age = "Corwien";
   // 测试调用静态方法时,不会执行构造方法,只有实例化对象时才会触发构造函数,输出下面的内容。
  echo __LINE__,__FILE__,"
"; } 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以上会提示 /* 调用类的静态函数时不会自动调用类的构造函数。 测试方法,在各个函数里分别写上下面的代码 echo __LINE__,__FILE__,"
"; 根据输出的内容,就知道调用顺序了。 */ // 调用静态方法,不会执行构造方法,只有实例化对象时才会触发构造函数,输出构造方法里的内容。 Human::tell(); ?>
总结

(1)、静态属性不需要实例化即可调用。因为静态属性存放的位置是在类里,调用方法为"类名::属性名";
(2)、静态方法不需要实例化即可调用。同上
(3)、静态方法不能调用非静态属性。因为非静态属性需要实例化后,存放在对象里;
(4)、静态方法可以调用非静态方法,使用 self 关键词。php里,一个方法被self:: 后,它就自动转变为静态方法;
(5)、调用类的静态函数时不会自动调用类的构造函数。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22194.html

相关文章

  • PHP静态方法属性、延迟静态绑定

    摘要:静态方法和属性静态方法是以类作为作用域的函数。静态方法不能访问这个类中的普通属性,因为那些属性属于一个对象,但可以访问静态属性。因此静态方法和属性又被称为类变量和属性,也就不能在静态方法中使用伪变量。引入了延迟静态绑定的概念。 静态方法和属性 静态方法是以类作为作用域的函数。静态方法不能访问这个类中的普通属性,因为那些属性属于一个对象,但可以访问静态属性。如果修改了一个静态属性,那么这...

    rubyshen 评论0 收藏0
  • php: static keyword

    摘要:函数内的变量静态变量的理解静态变量类型说明符是。静态变量虽在程序的整个执行过程中始终存在,但是在它作用域之外不能使用。静态变量并不是说其就不能改变值,不能改变值的量叫常量。 函数内的static变量 static静态变量的理解 静态变量 类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间...

    Astrian 评论0 收藏0
  • php易错笔记-类与对象,命名空间

    摘要:类与对象基本概念如果在之后跟着的是一个包含有类名的字符串,则该类的一个实例被创建。如果该类属于一个名字空间,则必须使用其完整名称。如果一个类被声明为,则不能被继承。命名空间通过关键字来声明。 类与对象 基本概念 new:如果在 new 之后跟着的是一个包含有类名的字符串,则该类的一个实例被创建。如果该类属于一个名字空间,则必须使用其完整名称。 Example #3 创建一个实例 ...

    MartinHan 评论0 收藏0
  • PHP面向对象new self( ) new static( ) 区别

    摘要:首先阐明结论,在中指向定义了当前被调用方法的类,指向调用当前静态方法的类。下面的例子更好的说明了和之间的差异后者使用了的后期静态绑定指向调用方法的当前类 首先阐明结论,在PHP中 self指向定义了当前被调用方法的类, static指向调用当前静态方法的类。 接下来通过一个例子来证明上面的结果 class A { public static $_a = Class A; ...

    missonce 评论0 收藏0
  • PHP面向对象编程:面向对象概念、基本实践、高级实战、PHP面向对象特殊实践

    摘要:一面向对象的概念什么是面向对象世间万物皆对象,抽象的也是对象,一切可见或不可见都是对象对象的基本组成对象包含两个部分对象的组成元素是对象的数据模型,用于描述对象的数据又称为对象的属性,或者对象的成员变量对象的行为是对象的行为模型,用于描述对 一、面向对象的概念 1.1 什么是面向对象(object oriented)      世间万物皆对象,抽象的也是对象,一切可见或不可见都是对象 ...

    worldligang 评论0 收藏0

发表评论

0条评论

Flands

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<