zoukankan      html  css  js  c++  java
  • PHP 静态变量和静态方法

    PHP静态变量
    静态变量(也叫类变量)

    静态的变量的基本用法
    1.在类中定义静态变量形式:
    [访问修饰符] static $变量名;
    例;  //public static $nums=0;
    2.如何访问静态变量
    如果在类中访问  有两种方法    self::$静态变量名  ,  类名::$静态变量名
    如果在类外访问: 有一种方法    类名::$静态变量名

    例程:
    提出一个问题:
    说,有一群小孩在玩堆雪人,不时有新的小孩加入,
    请问如何知道现在共有多少人在玩?请使用面向
    对象的思想,编写程序解决

    [php] view plain copy
    <?php  
    class Child  
    {  
        public $name;  
        //这里定义并初始化一个静态变量 $nums  
        public static $nums=0;  
        public static $i=1;  
        //构造函数  
        function __construct($name)  
        {                        
            $this->name=$name;  
        }   
        //静态方法  
        public  function join_game()  
        {  
            //self::$nums 使用静态变量  
            //self::$nums+=1;  或  
            Child::$nums+=1;  
            echo Child::$i.".".$this->name."加入堆雪人游戏!<br>";  
            Child::$i++;  
        }  
    }  
    //创建三个小孩  
    $child1=new Child("李逵");  
    $child1->join_game();  
    $child2=new Child("张飞");  
    $child2->join_game();  
    $child3=new Child("唐僧");  
    $child3->join_game();  
    $child4=new Child("八戒");  
    $child4->join_game();  
    //看看有多少人参加了游戏  
    echo "<br/> 共有--".child::$nums."--个人参加了游戏!";  
    ?>  

    静态方法(又叫类方法)
    其形式如下:
    [访问修饰符] static  function 方法名(){}
    例;  //public static function enter_school($ifree){}
    需求: 当我们操作静态变量的时候,我们可以考虑使用静态方法,比如统计所有学生交的学费

    在我们编程中,我们往往使用静态方法去操作静态变量.

    使用静态方法不需要创建对象,可以直接访问该静态方法

    2.如何访问静态方法:
    如果在类中访问  有两种方法    self::静态方法名  ,  类名::静态方法名
    如果在类外访问: 有两种方法    类名::静态方法名  ,  对象名->类方法名
    静态方法的特点
    1.静态方法只能操作静态变量
    2.静态方法不能操作非静态变量.
    这里请注意 : 普通的成员方法,既可以操作非静态变量,也可以操作静态变量 */

    <?php  
    class student  
    {  
        public $name;  
        //这里定义并初始化一个静态变量 $nums  
        public static $free=0;  
        //public static $i=1;  
        //构造函数  
        function __construct($name,$ifree)  
        {                        
            $this->name=$name;  
            echo "<br>";  
            echo $this->name."入学了,要交学费:".$ifree."元<br>";  
        }   
        //静态方法,新生入学,上交学费  
        public static function enter_school($ifree)  
        {  
            self::$free+=$ifree;      
        }  
        //获取学费  
        public static function getfree()  
        {  
            return  self::$free;  
        }     
    }  
    //静态方法不需要像普通成员方法一样要创建对象才可调用,可在不创建对象的情况下调用静态方法  
    //student::enter_school(10000);  
    //创建学生对象  
    $student1=new student("小明",1000);  
    //通过对象名调用静态方法  
    $student1->enter_school(1000);  
    //通过类名来调用静态方法  
    //student::enter_school(1000);  
    $student2=new student("小东",200);  
    $student2->enter_school(2000);  
    $student3=new student("小亮",3000);  
    $student3->enter_school(3000);  
      
    echo "共收取学费".$student3->getfree()."元!<br>";  
    //echo "共收取学费".student::getfree()."元!<br>";  
    ?>  
  • 相关阅读:
    Android推送服务——百度云推送
    关于HierarchyViewer的使用
    Android开发者的演示工具——asm.jar
    重装huson遇到的一些错误及解决
    对比语法错误、语义错误以及运行时错误
    对比常量存储与堆栈
    php下载文件夹目录下的文件
    B/S(WEB)系统中使用Activex插件调用扫描仪实现连续扫描并上传图像(IE文件扫描并自动上传
    上传文件夹
    如何在Web页面里使用高拍仪扫描上传图像
  • 原文地址:https://www.cnblogs.com/axj1993/p/6396552.html
Copyright © 2011-2022 走看看