在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 @   一个人的孤独自白  阅读(1418)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示