加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

开启PHP Static 关键字之旅模式

发布时间:2020-12-13 02:56:13 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:开启PHP Static 关键字之旅模式》要点: 本文介绍了PHP实战:开启PHP Static 关键字之旅模式,希望对您有用。如果有疑问,可以联系我们。 声明类成员或方法为static,就可以不实例化类而直接拜访.不能通过一个对象来拜访其中的静态成员(静态方法除

《PHP实战:开启PHP Static 关键字之旅模式》要点:
本文介绍了PHP实战:开启PHP Static 关键字之旅模式,希望对您有用。如果有疑问,可以联系我们。

声明类成员或方法为static,就可以不实例化类而直接拜访.不能通过一个对象来拜访其中的静态成员(静态方法除外).PHP学习

为了兼容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变量的,因为静态办法不属于某个特定的实例.

《PHP实战:开启PHP Static 关键字之旅模式》是否对您有启发,欢迎查看更多与《PHP实战:开启PHP Static 关键字之旅模式》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读