开启PHP Static 关键字之旅模式
发布:smiling 来源: PHP粉丝网 添加日期:2021-06-26 15:34:19 浏览: 评论:0
静态成员是一种类变量,可以把它看成时属于整个类而不是属于类的某个实例。与一般的实例变量不同的是,静态成员只保留一个变量值,而这个变量值对所有的实例都是有效的,也就是说,所有的实例共享这个成员,跟着小编一起去探讨php static关键字吧。
声明类成员或方法为static,就可以不实例化类而直接访问。不能通过一个对象来访问其中的静态成员(静态方法除外)。
为了兼容PHP4,如果没有指定“可见性”,属性和方法默认为public。
由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。
静态属性不可以由对象通过->操作符来访问。
用::方式调用一个非静态方法会导致一个E_STRICT级别的错误。
就像其它所有的PHP静态变量一样,静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。 所以你可以把静态属性初始化为整型或数组,但不能指向另一个变量或函数返回值,也不能指向一个对象。
PHP5.3.0之后,我们可以用一个变量来动态调用类。但该变量的值不能为关键字self, parent 或static。
Example #1 静态成员代码示例
- <?php
- class Foo
- {
- public static $my_static = 'foo';
- public function staticValue() {
- return self::$my_static;
- }
- }
- class Bar extends Foo
- {
- public function fooStatic() {
- return parent::$my_static;
- }
- }
- print Foo::$my_static . " ";
- $foo = new Foo();
- print $foo->staticValue() . " ";
- print $foo->my_static . " "; // Undefined "Property" my_static
- print $foo::$my_static . " ";
- $classname = 'Foo';
- print $classname::$my_static . " "; // PHP 5.3.0之后可以动态调用
- print Bar::$my_static . " ";
- $bar = new Bar();
- print $bar->fooStatic() . " ";
- ?>
Example #2 静态方法代码示例
- <?php
- class Foo {
- public static function aStaticMethod() {
- // ...
- }
- }
- Foo::aStaticMethod();
- $classname = 'Foo';
- $classname::aStaticMethod(); // As of PHP 5.3.0
- ?>
关于static 中静态变量和静态方法的总结
静态变量
静态变量是只存在于函数作用域的变量,不过,在函数执行完成后,这种变量的值不会丢失,也就是说,在下一次调用这个函数时,变量仍然会记得原来的值。要将某个变量定义为静态的,只需要在变量前加上 static 关键字即可。
在类中,static关键字有两种主要用法,一是用来定义静态成员,一是用来定义静态方法。在类的内部,可以使用作用域限定符 (::) 来访问不同层次作用域的变量。
静态方法
静态方法和非静态方法之间有一个重要的区别:在调用静态方法时,不再需要拥有类的实例。
静态方法和非静态方法使用原则:一是如果某个方法中不包含$this变量,就应该时静态方法;如果不需要类的实例,可能还应该使用静态类,这样可以免去实例化类的工作。另,在静态方法中时不能使用$this变量的,因为静态方法不属于某个特定的实例。
Tags: Static PHP关键字模式
- 上一篇:PHP类的封装与继承详解
- 下一篇:实例简介PHP的一些高级面向对象编程的特性
相关文章
- ·PHP面向对象之旅:static变量与方法(2014-01-17)
- ·php中$this、static、final、const、self的用法(2014-02-10)
- ·php面向对象 static、 const、final关键字的使用(2014-03-28)
- ·php final static const成员属性用法(2014-05-21)
- ·php static 变量的例子(2014-06-04)
- ·PHP static静态局部变量和静态全局变量总结(2014-06-14)
- ·php中接口、抽象类、Final、Static例子(2016-07-27)
- ·php中static 静态变量和普通变量的区别(2016-08-18)
- ·区别PHP中的const,static,public,private,protected(2020-02-22)
- ·PHP面向对象之旅:深入理解static变量与方法(2020-08-23)
- ·php面向对象中static静态属性和静态方法的调用(2021-05-10)
- ·php面向对象中static静态属性与方法的内存位置分析(2021-05-10)
- ·PHP中static关键字以及与self关键字的区别(2021-06-06)
- ·php面向对象编程self和static的区别(2021-08-01)
- ·php面向对象程序设计中self与static的区别分析(2021-11-22)
- ·PHP面向对象程序设计中的self、static、parent关键字用法分析(2021-12-11)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)