在方法内部调用方法,而两者都在同一个PHP类

时间:2017-05-29 09:07:51

标签: php function methods

我认为这可以通过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);

但相反,我不断收到我在代码中种植的相同错误消息,以防它无效。任何有关这方面的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为是因为您需要拨打 changePosition() { this.dialModalRef.updatePosition({ top: '50px', left: '50px' }); } 而不是$this->display($obj);