PHP请问在static的function中如何访问变量

classA{private$url;publicfunction__construct(){$this->url=$_SERVER['PATCH_INFO'];}pub... 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该如何实现?
展开
 我来答
百度网友a19d193
2013-06-08 · TA获得超过3446个赞
知道大有可为答主
回答量:1464
采纳率:100%
帮助的人:1452万
展开全部

静态方法只能访问其他的静态方法或属性,比如

class A {
    private static $url;
    public static function setDefaultUrl($url) {
        self::$url = $url;
    }
    public static function getDefaultUrl() {
        return self::$url;
    }
}
//或者在你的静态方法中获得实例,当然这样的话可能达不到你预期的效果,推荐你还是使用上面的方法。
class A {
    private $url = 'demo';
    public static function getUrl() {
        $obj = new self();
        return $obj->url;
    }
}
更多追问追答
追问
意思是static的function只能访问static的变量,如果要访问非static的变量只能实化自生来访问?
追答
是的。static是不需要实例化就能使用的,其它的方法属性只能由该类的实例调用。
DominoHank
2013-06-08 · TA获得超过2388个赞
知道大有可为答主
回答量:3582
采纳率:33%
帮助的人:1749万
展开全部

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

 class A{
    //需要设置成静态变量
    private static $url = "

        public function __construct() {
    }
    static public function get(){
        var_dump(self::$url);
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lxydjx
2013-06-08 · TA获得超过283个赞
知道小有建树答主
回答量:472
采纳率:0%
帮助的人:409万
展开全部
要么把url直接写到get方法中,要么去掉设置成普通方法实例化调取 静态方法不经过构造函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0ff1ff9
2013-06-08 · TA获得超过900个赞
知道小有建树答主
回答量:1395
采纳率:50%
帮助的人:643万
展开全部
搞错了,不知道,$_SERVER['PATCH_INFO']这个变量可以直接返回吧,static function中无法使用$this,去掉static试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式