【问题标题】:Calling a method inside of a method while both are in the same PHP class在一个方法中调用一个方法,而两者都在同一个 PHP 类中
【发布时间】:2017-05-29 09:07:50
【问题描述】:

我认为这可以通过 PHP 实现,但我在让它工作时遇到了一些麻烦。我试图通过仅创建一个应该显示在 php 类方法中的 html 实例来最小化重复的代码量。这是我只想创建一次的部分。

public function display($dbCon){
    $content = $obj->content;
    $contentSEO = $obj->contentSEO;
    $contentLink = $obj->contentLink;
        if(!empty($content) && !empty($contentSEO) && !empty($contentLink)){
            $content = str_replace("$contentSEO","<a href=\"$contentLink\"><small>$contentSEO</small></a>",$content);
            printf("%s", $content);
        } elseif(!empty($content) && empty($contentSEO) && !empty($contentLink)){
            $content = str_replace("$content","<a href=\"$contentLink\">$content</a>",$content);
            printf("%s", $content);
        } elseif(!empty($content) && !empty($contentSEO) && empty($contentLink)){
            $content = str_replace("$contentSEO","<small>$contentSEO</small>",$content);
            printf("%s", $content);
        } elseif(!empty($content) && empty($contentSEO) && empty($contentLink)){
            printf("%s", $content);
        } else {
            echo "Error";
        }
    }

现在这是一个类的内部,我希望在执行 sql 查询后,下面的方法在上面调用这个方法。我的目的是,如果我需要使用相同的 HTML 调用类似的函数,我可以简单地调用这个已经创建的函数,而不是重新编码。第二部分看起来像这样。

public function content1($dbCon){
        if($res = $this->dbConnection->query("SELECT * FROM content WHERE status = '1' and id = '1'")) {
            while($obj = $res->fetch_object()) {
                $this->display($dbCon);
            }
        }
    }

现在最简单的方法是将它们都添加到同一个函数中,这确实有效。就像下面的例子。

public function content1($dbCon){
        if($res = $this->dbConnection->query("SELECT * FROM content WHERE status = '1' and id = '1'")) {
            while($obj = $res->fetch_object()) {
                $content = $obj->content;
                $contentSEO = $obj->contentSEO;
                $contentLink = $obj->contentLink;
                if(!empty($content) && !empty($contentSEO) && !empty($contentLink)){
                    $content = str_replace("$contentSEO","<a href=\"$contentLink\"><small>$contentSEO</small></a>",$content);
                    printf("%s", $content);
                } elseif(!empty($content) && empty($contentSEO) && !empty($contentLink)){
                    $content = str_replace("$content","<a href=\"$contentLink\">$content</a>",$content);
                    printf("%s", $content);
                } elseif(!empty($content) && !empty($contentSEO) && empty($contentLink)){
                    $content = str_replace("$contentSEO","<small>$contentSEO</small>",$content);
                    printf("%s", $content);
                } elseif(!empty($content) && empty($contentSEO) && empty($contentLink)){
                    printf("%s", $content);
                } else {
                    echo "Error";
                }
            }
        }
    }

但是,这样做需要我始终复制和粘贴相同的代码。需要时。我宁愿只使用查询创建函数并调用 if 语句函数来显示 HTML。我想我可以像这样在while语句之后在函数内部简单地调用它:

$this->display($dbCon);

但相反,我不断收到我在代码中植入的相同错误消息,以防它不起作用。对此的任何帮助将不胜感激。

【问题讨论】:

    标签: php function methods


    【解决方案1】:

    我认为这是因为您需要调用$this-&gt;display($obj); 而不是$this-&gt;display($dbCon);

    【讨论】:

    • 不,我试过了,我还尝试了其他一些变体,你给了我一些关于为什么它可以被破坏的想法,但这些也没有结果。
    猜你喜欢
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多