第70讲 static关键字静态变量

Static(静态)关键字

==Tip==
本页说明了用 static 关键字来定义静态方法和属性。static 也可用于定义静态变量以及后期静态绑定。参见上述页面了解 static 在其中的用法。

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

  • 兼容php 4 如果没有指定访问控制符 ,属性和方法通通默认公有

  • 静态方法不需要对象就可以调用,所以 伪变量 $this 在静态方法中不可用
  • 静态属性不可以由对象通过 -> 操作符来访问。
  • 用静态方式调用一个非静态方法会导致一个 E_STRICT 级别的错误

global 方式:

<?php
    global $global_nums;
    $global_nums=0;
    class Child{
        public $name;

        function __construct($name){
            $this->name=$name;
        }
        public function join_game(){
            global $global_nums;
            $global_nums++;
            echo $this->name."加入堆雪人游戏<br/>"."多少人?".$global_nums."<br/>";
        }
    }

    $child1 = new Child("张飞");
    $child1->join_game();

    $child2 = new Child("李逵");
    $child2->join_game();

    $child3 = new Child("唐僧");
    $child3->join_game();

?>

static 方式:

<?php
    class ChildStatic{
        public $name;
        public static $nums;
        public static $my_static="foo";
        public function __construct($name){
            $this->name=$name;
        }
        public function join_game(){
            self::$nums++;
            echo $this->name."玩游戏<br/>";
        }
    }

    $childStatic1 = new ChildStatic("李白");
    $childStatic1->join_game();
    $childStatic2 = new ChildStatic("钟馗");
    $childStatic2->join_game();
    $childStatic3 = new ChildStatic("程咬金");
    $childStatic3->join_game();

    echo "总共".ChildStatic::$nums."人玩游戏";

    $className = "ChildStatic";

    echo "总共".$className::$nums."人玩游戏";

    //echo "总共".$childStatic3->my_static."人玩游戏";//这种调用方式 错了 但是 手册上有用对象直接调用的为啥不行 my_static 带不带 $ 都会出错  直接报了notice 貌似是不是能调用 但是未定义啥的 目前不让使唤?  ----- 不能写法。。。。。。。。。。。
?>

==static 定义的变量 在类的内部 用 self:: xx;访: xx访问== 具体请参考php使用手册

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有时有晌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值