在static的function静态函数中访问成员变量

class A{
    private $url;

public function __construct(){
           $this->url = $_SERVER['PATCH_INFO'];

    }

public static function get(){
        var_dump(self::$url);//出错,说静态变量未初始化

        var_dump($this->url);//也出错,说无法使用this;

    }

}
get里想取出$url该如何实现?方法如下:
class A {
    //方法1
    private static $url;
    public static function setDefaultUrl($url) {
        self::$url = $url;
    }
    public static function getDefaultUrl() {
        return self::$url;
    }
}
//方法2,在静态方法中获得实例,当然这样的话可能达不到你预期的效果,推荐还是使用上面的方法。
class A {
    private $url = 'demo';
    public static function getUrl() {
        //实例化
        $obj = new self();
        return $obj->url;
    }
} 

对于类的成员变量和方法:
1.如果一个被引用的变量或方法定义时使用了static或const,那么必须使用::访问。
2.如果一个被引用的变量或方法定义时没有使用static或const,那么必须使用->访问。
3.如果要访问一个被static或const修饰的变量或方法,那么必须使用self访问。
4.如果要访问一个没有被static或const修饰的变量或方法,那么必须使用$this访问。
posted @ 2018-04-02 10:49  一个人的孤独自白  阅读(1401)  评论(0编辑  收藏  举报