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该如何实现? 展开
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该如何实现? 展开
4个回答
展开全部
静态方法只能访问其他的静态方法或属性,比如
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是不需要实例化就能使用的,其它的方法属性只能由该类的实例调用。
展开全部
用::方式调用一个非静态方法会导致一个E_STRICT级别的错误。
class A{
//需要设置成静态变量
private static $url = "
public function __construct() {
}
static public function get(){
var_dump(self::$url);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要么把url直接写到get方法中,要么去掉设置成普通方法实例化调取 静态方法不经过构造函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
搞错了,不知道,$_SERVER['PATCH_INFO']这个变量可以直接返回吧,static function中无法使用$this,去掉static试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询