首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用解析类静态

使用解析类静态
EN

Stack Overflow用户
提问于 2022-08-02 08:26:17
回答 2查看 44关注 0票数 0

在我的代码中,我使用了所有的类--静态的,比如:Parsedown::text('text'); --如果我尝试像这样使用它,它会给我一个错误消息,“在没有对象上下文的情况下使用$this ",但是我不知道如何像这样使用Parsedown,因为我只能使用它实例化如下:

代码语言:javascript
复制
$Parsedown = new Parsedown();
echo $Parsedown->text('text');

函数文本代码

代码语言:javascript
复制
    function text($text)
    {
        # make sure no definitions are set
        $this->DefinitionData = array();

        # standardize line breaks
        $text = str_replace(array("\r\n", "\r"), "\n", $text);

        # remove surrounding line breaks
        $text = trim($text, "\n");

        # split text into lines
        $lines = explode("\n", $text);

        # iterate through lines to identify blocks
        $markup = $this->lines($lines);

        # trim line breaks
        $markup = trim($markup, "\n");

        return $markup;
    }

如何使用解析静态?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-04 08:53:02

您可以在instance()函数中使用Parsedown类静态

代码语言:javascript
复制
echo Parsedown::instance()->text('Text'); 

实例函数代码:

代码语言:javascript
复制
    static function instance($name = 'default')
    {
        if (isset(self::$instances[$name]))
        {
            return self::$instances[$name];
        }

        $instance = new static();

        self::$instances[$name] = $instance;

        return $instance;
    }
票数 0
EN

Stack Overflow用户

发布于 2022-08-02 08:46:02

嗨,如果您想使用静态方法,您应该告诉php,您的方法在方法定义时是静态的,例如,在您的情况下,您可以这样定义您的方法:

代码语言:javascript
复制
public static function text($text)
{
    # make sure no definitions are set
    self::DefinitionData = array();

    # standardize line breaks
    $text = str_replace(array("\r\n", "\r"), "\n", $text);

    # remove surrounding line breaks
    $text = trim($text, "\n");

    # split text into lines
    $lines = explode("\n", $text);

    # iterate through lines to identify blocks
    $markup = self::lines($lines);

    # trim line breaks
    $markup = trim($markup, "\n");

    return $markup;
}

如您所见,i user Self::而不是$this->,因为在静态函数中,您不能访问初始化数据,您也需要将您的公共变量定义为静态的。

然后你就可以像这样使用你的功能了

代码语言:javascript
复制
Parsedown::text('text');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73204250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档