在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访问。

转载于:https://www.cnblogs.com/-mrl/p/8691088.html

在一个类,可以使用static关键字定义静态变量静态成员函数静态变量静态成员函数不依赖于类的实例,可以在类被创建之前就被访问和使用。 以下是一个示例,演示如何在类定义静态变量静态成员函数: ``` class MyClass { public: static int m_staticVar; // 静态变量 static void staticFunc(); // 静态成员函数 void nonStaticFunc(); // 非静态成员函数 }; // 在类外定义静态变量,需要加上类名和作用域解析符:: int MyClass::m_staticVar = 0; // 定义静态成员函数 void MyClass::staticFunc() { // 访问静态变量 m_staticVar++; std::cout << "Static function called!" << std::endl; } // 定义非静态成员函数 void MyClass::nonStaticFunc() { // 访问静态变量 m_staticVar++; std::cout << "Non-static function called!" << std::endl; } ``` 在上面的示例,定义了一个名为MyClass的类,其包含了一个静态变量m_staticVar和一个静态成员函数staticFunc。在类声明静态变量静态成员函数时需要使用static关键字。 在类外定义静态变量时,需要加上类名和作用域解析符::。在定义静态成员函数和非静态成员函数时,可以直接在函数名前加上static关键字来定义静态成员函数,或者不加static关键字来定义非静态成员函数。 使用静态变量静态成员函数时,可以通过类名和作用域解析符::来访问。例如,可以通过MyClass::m_staticVar来访问静态变量m_staticVar,通过MyClass::staticFunc()来调用静态成员函数staticFunc。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值