PHP 手册 (类与对象) 学习笔记九:Static(静态)关键字

static 关键字来定义静态方法和属性
描述:

  • 声明类属性或方法为静态,就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)

  • 为了兼容 PHP 4,如果没有指定访问控制,属性和方法默认为公有。

  • 由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用

  • 静态属性不可以由对象通过 -> 操作符来访问

  • 用静态方式调用一个非静态方法会导致一个 E_STRICT 级别的错误。

  • 就像其它所有的 PHP 静态变量一样,静态属性只能被初始化为文字或常量,不能使用表达式。所以可以把静态属性初始化为整数或数组,但不能初始化为另一个变量或函数返回值,也不能指向一个对象。

  • 自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 self,parent 或 static。
    Example 1: 静态属性,静态方法示例

     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 . "\n";//foo
      $foo = new Foo();
      print $foo->staticValue() . "\n";//foo
      print $foo::$my_static . "\n";//foo
    //    print $foo->my_static . "\n";//Undefined "Property" my_static
      $classname = 'Foo';
      print $classname::$my_static . "\n";//foo
    
      print Bar::$my_static ."\n";//foo
      print Bar::fooStatic() . "\n";//foo
      $bar = new Bar();
      print $bar->fooStatic();//foo

    附手册地址

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!