我得到了一个返回常量的函数..这是我的类和函数:

class Backlinks extends GoogleSearch {
const ROBOTS_NOINDEX_NOFOLLOW = 606;

    function robotsNoIndexNoFollow(){
    $crawler = new Connection();
    $curl = $crawler -> setUrl($this->url) ->getDocument();
    if ($curl){
        $html = new simple_html_dom($curl);
        $robots = $html -> find("meta[name=robots]", 0);
        $html -> clear();
        unset ($crawler);
        if ($robots){
            $content = $robots -> getAttribute("content");
            $content = strtolower($content);
            if (substr_count($content, "noindex")){
                return ROBOTS_NOINDEX_NOFOLLOW;
            }
            if (substr_count($content, "nofollow")){
                return ROBOTS_NOINDEX_NOFOLLOW;
            }
        }
        else{
            return false;
        }
    }

}

上面的问题是在机器人中。
常量作为一个错误参数进入另一个函数,以便在数据库中更新。
public function setStatus($error){
    $status = $error;
    if (!$error){
        $status = 200;
    }
    // only update the pages which weren't already scanned (for historic purposes).
    $query = "UPDATE task_pages tp
        SET scan_status = $status
        WHERE page_id = $this->pageID AND scan_status = 0";
    mysql_query($query) or die(mysql_error());
}

我有两个错误:
注意:使用未定义的常数ROBOTS
C:\程序文件中的“ROBOTS\u NOINDEX\u NOFOLLOW”
(x86)第78行的Zend\Apache2\htdocs\backlinks\cron\backlinks.php
“字段列表”中的未知列“ROBOTS\u NOINDEX\u NOFOLLOW”
一个是常数没有被定义的问题,我不明白为什么。
第二个问题是sql..它将常量解释为列?!?
为什么以及如何纠正?

最佳答案

您需要使用“self”来引用常量:
返回self::ROBOTS_NOINDEX_NOFOLLOW
否则,PHP将尝试在全局范围内查找常量,即使在您的情况下这是一个类常量。

07-26 09:37