php的static静态方法怎么使用


本文小编为大家详细介绍“php的static静态方法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“php的static静态方法怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 php static静态方法中的“静态”指的是无需对类进行实例化,就可以直接调用这些属性和方法;而static就是一个关键字,用来修饰类的属性及方法,其使用语法如“class Foo {public static $my_static = ‘hello’;}”。PHP static静态详解PHP 类属性和方法都需要在类实例化后才能调用(常量属性除外),但是,PHP 还提供了静态属性和静态方法,所谓「静态」指的是无需对类进行实例化,就可以直接调用这些属性和方法。静态类不是不可以实例化,而是不需要实例化就可以用。用static关键字来修饰类的属性、方法,称这些属性、方法为静态属性、静态方法。语法:实例:语法:实例:注:静态属性和方法与对象属性和方法一样,支持设置 privateprotectedpublic 三种可见性级别。通过 类名::属性/方法 的方式调用。注:预定义常量 PHP_EOL 表示系统换行符。结果:通过 对象名::属性/方法 的方式调用。结果:通过对象名 -> 方法调用、对象名 -> 属性失败。结果:通过 self::属性/方法 的方式调用,self 指向当前类,就像 $this 指向当前对象一样;而在没有实例化的情况下,$this 指针指向的是空对象,所以不能动过它引用静态属性和方法。结果:与在非静态方法中调用静态属性/方法一样。结果:如果在一个类中调用其他类的静态属性和方法,需要通过 完整类名:: 进行引用。结果:由于privateprotected属性的限制只在类内调用,想在类外调用,需为外部提供一个public的方法,方法访问privateprotected属性。术语:类对外提供接口。结果:在实际应用中会有一个类的多个对象,可能会共享一份数据。类常量和静态属性都可以实现。静态属性与类常量相似(相同),唯一的区分是类常量不可以更改,静态属性可以更改。访问方法是一样的,都可以使用::访问。 静态属性需要加$,常量名前没有$,所以访问类常量时根本不需要加。结果:登录后复制结果:和非静态属性/方法一样,静态属性和方法也可以被子类继承,静态属性和方法还可以被子类重写。子类可以重写父类的静态成员变量, 但父类的静态变量依然存在, 这两个静态成员变量是独立的. 会根据调用的类名分别进行访问。结果:子类可以重写父类的静态方法。通过 __CLASS__ 可以获取当前类的类名,我们分别调用两个类的 getClassName 方法:结果:说明子类重写了父类的同名静态方法,同样我们在子类上也可以调用父类中的 whoclassName 方法:结果:为什么第二个打印的结果是父类名 Mystatic1 而不是子类名 Mystatic2?这是因为, $this 指针始终指向持有它的引用对象,而self 指向的是定义时持有它的类而不是调用时的类,为了解决这个问题,从 PHP 5.3 开始,新增了一个叫做延迟静态绑定的特性。延迟静态绑定(Late Static Bindings)针对的是静态方法的调用,使用该特性时不再通过 self:: 引用静态方法,而是通过 static::,如果是在定义它的类中调用,则指向当前类,此时和 self 功能一样,如果是在子类或者其他类中调用,则指向调用该方法所在的类。结果:表明后期静态绑定生效,即 static 指向的是调用它的方法所在的类,而不是定义时,所以称之为延迟静态绑定。此外,还可以通过 static::class 来指向当前调用类的类名,例如我们可以通过它来替代 __CLASS__,这样上述子类就免费云主机域名没有必要重写 getClassName 方法了:结果:同理,self::class 则始终指向的是定义它的类。静态属性和方法可以直接通过类引用,所以又被称作类属性和类方法。非静态属性和非静态方法需要实例化后通过对象引用,因此被称作对象属性和对象方法。静态属性保存在类空间,非静态属性保存在对象空间。非静态方法可以访问类中的任何成员(包括静态),静态方法只能访问类中的静态成员。静态方法可以直接调用,类名调用和对象调用(类名或self::调用),但是非静态方法只能通过对象调用(对象名或$this->调用)。一个类的所有实例对象,共用类中的静态属性。如果修改了这个类静态属性,那么这个类的所有对象都能访问到这个新值。静态方法和属性的生命周期跟相应的类一样长,静态方法和静态属性会随着类的定义而被分配和装载入内存中。一直到线程结束,静态属性和方法才会被销毁。 非静态方法和属性的生命周期和类的实例化对象一样长,只有当类实例化了一个对象,非静态方法和属性才会被创建,而当这个对象被销毁时,非静态方法也马上被销毁。静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。但静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。静态方法最适合工具类中方法的定义;比如文件操作,日期处理方法等.静态变量适合全局变量的定义.php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因为php是开源的,从而使得php经久不衰。读到这里,这篇“php的static静态方法怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: 如何用C语言代码实现插入排序

本文小编为大家详细介绍“如何用C语言代码实现插入排序”,内容详细,步骤清晰,细节处理妥当,希免费云主机域名望这篇“如何用C语言代码实现插入排序”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。程序代码:读到这里,这篇“如何用C语言代码实…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 02/17 16:04
Next 02/17 16:04

相关推荐