静态属性


所谓静态属性,也就是这个属性对于这个类来说是唯一的,不管有多少个对象,只要它引用了一个静态对象,那么这些对象引用出来的值肯定是同一个。

静态变量不能使用->这种箭头符号,而是使用::这种作用域符号。
我们可以直接使用“类名::静态属性名”的格式访问静态属性。

从内存上来看,静态属性和普通属性并不使用同一块内存,这也就决定了它天生就有一点特殊。

静态属性是只会被初始化一次,之后的每次调用都会使用原来的值。
例子:
class star{
static public $count=1;
function __construct(){
echo "这是第",self::$count;
echo "次实例化","

";
self::$count +=1;
}
}
$xin=new star();
$mao=new star();
$xi=new star();

在类的内部,我们使用 self::静态属性名 这种格式去访问它们。
我们在构造函数中直接调用静态属性$count,而且每次该函数被调用的时候,同时执行一个自增操作,也就是次数加一。
执行结果为:
这是第1次实例化

这是第2次实例化

这是第3次实例化


这里由于该属性是静态的,它只会被初始化一次,之后再次调用的时候就会变成自增。
如果我们把相应的静态属性换成普通属性
例子:

class star{

public
$count=1;
function
__construct(){
echo
"这是第",$this->count;
echo
"次实例化","

";
$this->count +=1;
}
}
$xin=new
star();
$mao=new
star();
$xi=new
star();
执行结果为:
这是第1次实例化
这是第1次实例化
这是第1次实例化

普通属性在每次实例化的时候都会被重新赋值一次,也就是说$this->count
得到的结果始终是1,因为它被重新赋值了N次。


静态方法

所谓静态方法,就是这个方法是属于这个类的,我们可以在不实例化任何对象的时候调用它。
对于静态方法我们要重点关注它的三个特点:
1,如何声明一个静态方法
2,如何去调用这个静态方法
3,静态方法可以干什么不可以干什么

class
star{
static function team($name){
echo "队伍核心成员:";
echo $name;
echo "

";
}
}
star::team("罐罐");
$guan=new star();
$guan->team("萌罐罐");

输出结果为:
队伍核心成员:罐罐

队伍核心成员:萌罐罐


1,声明定义一个静态函数很简单,它只需要在function前面加一个static关键字就可以了。
2,调用静态方法可以使用
“类名::静态函数名”的格式去调用,也可以直接实例化一个变量,然后使用变量名->函数名的方法调用。
3,由于静态方法不需要类的实例化就能够被调用,而普通方法和普通属性都必须先声明一个对象才可以访问,因此,在静态方法里面始终是不能使用普通方法和访问普通变量的。

关于静态方法要牢牢记住一点:“静态方法是属于整个类的。”

PHP面向对象——静态属性和静态方法的更多相关文章

  1. php面向对象中static静态属性和静态方法的调用

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

  2. PHP static静态属性和静态方法

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

  3. static静态属性和静态方法的原理与调用技巧

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

  4. php静态属性和静态方法

    php静态属性和静态方法 2012-09-29 10:18 1518人阅读 评论(0) 收藏 举报 phpfunction 本php教程主要是学习php中静态属性和静态方法的使用方法和基本的示例. · ...

  5. PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

      前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象 ...

  6. PHP使用static关键字声明静态属性和静态方法

    PHP使用static关键字声明静态属性和静态方法 在PHP中,通过static关键字修饰的成员属性和成员方法被称为静态属性和静态方法. 静态属性和静态方法不需要在被类实例化的情况下就可以直接使用. ...

  7. ES6——静态属性与静态方法

    静态方法只能写在class内,constructor外.通过static关键字声明 静态属性只能写在class外,通过 类名.属性名 = 属性值 声明 //静态属性与静态方法(ES6明确规定,Clas ...

  8. Python之路(第二十三篇) 面向对象初级:静态属性、静态方法、类方法

    一.静态属性 静态属性相当于数据属性. 用@property语法糖装饰器将类的函数属性变成可以不用加括号直接的类似数据属性. 可以封装逻辑,让用户感觉是在调用一个普通的数据属性. 例子 class R ...

  9. Python之路系列:面向对象初级:静态属性、静态方法、类方法

    一.静态属性 静态属性相当于数据属性. 用@property语法糖装饰器将类的函数属性变成可以不用加括号直接的类似数据属性. 可以封装逻辑,让用户感觉是在调用一个普通的数据属性. 例子: class ...

随机推荐

  1. 正则表达式30分钟入门:http://deerchao.net/tutorials/regex/regex.htm#mission

    http://deerchao.net/tutorials/regex/regex.htm#mission

  2. createElement() 创建元素 appendChild()添加元素

    Javascript window 对象的document.createElement() 方法.语法及其使用. 1.方法 创建一个新的html元素对象,并可返回一个Element 对象,新创建的El ...

  3. Sqli-LABS通关笔录-12

    通过这个关卡我学习到了: 1.双引号千万别忘记,就是因为忘了弄了好一会儿.一直不报错. 2. 00x1万能密码构造二 报错的内容为: You have an error in your SQL syn ...

  4. OpenCV高斯模型

    int main(int argc, char** argv) { //std::string videoFile = "E:\\C_VC_code\\Text_Photo\\dingdan ...

  5. SQL Server 2008 R2安装图解教程

    一.下载SQL Server 2008 R2安装文件 cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.iso 二.将安装文件刻录成光盘 ...

  6. Delphi中Interface接口的使用方法

    示例注释(现在应该知道的): {   1.接口命名约定 I 起头, 就像类从 T 打头一样.   2.接口都是从 IInterface 继承而来; 若是从根接口继承, 可省略.   3.接口成员只能是 ...

  7. 深入mysql "on duplicate key update" 语法的分析

    如果在INSERT语句末尾指定了on duplicate key update,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE:如果不 ...

  8. JavaWeb出现404一个很隐蔽的原因

  9. POJ 1190(深搜)

    http://poj.org/problem?id=1190 又有好久没做搜索的题了,没想到做一个卡了我那么久,想哭啊. 一个中文题,思路呢也就是搜索呗,一层一层往上面搜,不过这里有两个比较重要的地方 ...

  10. kendoUI grid 过滤时出错:TypeError toLowerCase is not a function

    错误原因:类型不一致. 有些过滤类型为字符串,有些为整型时.