zoukankan      html  css  js  c++  java
  • PHP对象5: define / const /static

    define定义全局常量:

    define('PATH', '/data/home/www');

    const也是定义常量, 一般用于类中, 饰成员属性,不可以修饰方法,如下:

    class Test{  
        const PATH = 'c/';//修饰常量  
        const function test(){//这种方法是错误的,const无法修饰方法  
        }  
    }

    在类外部调用的时候, 不用加 $ 号:

        echo Test::PATH;  
        //也可以使用下面的方法调用  
        $test = new Test();  
        echo  $test::PATH;  

    在类内部调用的话, 是这样调用:

    class Test{  
        const PATH = 'c/';//修饰常量  
        public function ass(){  
            echo $this::PATH.'<br />';  
            echo self::PATH.'<br />';  
        }  
    } 

    atatic可以修饰属性, 也可修饰方法。

    const虽然很好用,但是一经定义就无法修改值了,但是有的时候我们需要一个属于类的属性,但是又可以修改其值,比如统计此类构造了几个对象,这个时候就是使用static的时候了,在static修饰类的成员变量的时候,它的使用方法基本与const一样。并且static修饰的成员变量的值是可以修改的。


    但是当static修饰成员方法的时候,使用方法有一点改变,在类的内部,static修饰的方法内部,无法访问当前类的任何普通成员变量。只可以使用当前类的静态成员变量(static ),和类常量(const)。

    也就是说, 一个方法定义成static后, 它只能访问static定义的变量或const定义的变量, 其他(如public)定义的属性无法访问。

        class Test{  
            static public $name='asd';  
            const π = 3.1415926;  
            public $age = 10;  
            public static function lenth($r){  
                //echo $this->age;//会发生错误,不能访问普通的成员变量  
                echo Test::$name;  
                return $r*2*self::π;  
                  
            }  
            public static function area($r){  
                return $r*$r*self::π;  
            }     
        }  

    访问static的方法是这种形式:

    #Char::Join();
    #$test->Join();
    #$test::Join();
    可以这样调用
        echo '周长:'. Test::lenth(1).'<br/>';  
        echo '面积:'.Test::area(1).'<br/>';  
        $per = new Test();  
        echo $per->lenth(3);  

    static的性性访问跟const一样。

    参考链接:

    static变量使用: http://www.cnblogs.com/perl6/p/6436756.html

    static方法使用: http://www.cnblogs.com/perl6/p/6437039.html

    其他const/static介绍: http://blog.csdn.net/u012368971/article/details/53492555

  • 相关阅读:
    递归部门
    web攻击几种方法
    β版本apk下载地址及源代码github地址
    软件工程第六组U-Helpβ版使用说明
    软件工程第六组(六扇门)β版本最终答辩博客
    alpha版本展示
    用户Bug修补报告
    任务墙最终版
    个人总结-尹童欣
    个人总结-齐天浩
  • 原文地址:https://www.cnblogs.com/perl6/p/7124302.html
Copyright © 2011-2022 走看看