为什么我得到PHP错误“在课堂上找不到方法”

时间:2013-04-04 07:22:45

标签: php

我有这段代码

<?php

/** 
 * Модуль, направляющий ссылки на платники handycash.biz
 * Для работы скрипта, необходимо выставить права 777 на файлы autodomainlock_hc.txt и hc_target_link_config.php
 * ссылаться на файл нужно следующим образом. Пример:
 * http://yoursite.com/hc_target_link.php?r=YYYY&q=XXXX&id=ZZZZ&t=CCCC
 * где
 * ?r - поток траффика,
 * &q - поисковый запрос
 * &id - id платника
 * &t - параметр включения ТДС. если не нужен - не передавать.
 */


class HcTargetLink
{
    // время обновления доменов, сек
    public $configUpdateTime = 600;

    // имя файла конфига
    public $configFile = 'hc_target_link_config.php';

    // адрес API актуальных доменов
    public $apiUrl = 'http://handycash.biz/api/api.txt';

    public $lockFile = 'autodomainlock_hc.txt';

    // проверка конфига для обновления
    public function checkConfig() {
        if (!file_exists($this->lockFile) || intval(file_get_contents($this->lockFile)) < time() - $this->configUpdateTime) {
            file_put_contents($this->lockFile, time());
            $curl = curl_init($this->apiUrl);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            $data = curl_exec($curl);
            if (!curl_errno($curl) && $data !== false) {
                $data = unserialize($data);
                if (is_array($data)) {
                    file_put_contents($this->configFile, serialize($data));
                }
            }
            curl_close($curl);
        }
    }

    public function check_get($get){
        $allowed = array(
            't' => array('wmid', 'q', 'id', 'r'),
            's' => array('id', 'q', 'r')
        );
        $type = '';
        if(array_search('wmid', $get))
            $type = 't';
        else
            $type = 's';

        foreach($allowed[$type] as $param){
            if (!array_search($param, $get)) {
                header('Location: http://natribu.org');
            }
        }
    }

    // запуск работы модуля
    public function run() {
        $this->check_get($_GET);
        $this->checkConfig();

        $config = unserialize(file_get_contents($this->configFile));
        $domain = '';

        if(isset($_GET['t'])){
            $domain = $config['tds'];
        } elseif(isset($_GET['wmid'])) {
            $id = $_GET['id'];
            if ($id = array_search($id, $config['0'])) {
                $domain = $config['0'][$id];
            }
        } elseif(empty($domain)) {
            $domain = $config['0'][array_rand($config['0'])];
        }

        $params = $_GET;
        unset($params['id']);
        unset($params['t']);
        $url = 'http://' . $domain . '/?' . http_build_query($params);
        header('Location: ' . $url);
        exit;
    }
}

$HcTargetLink = new HcTargetLink();
$HcTargetLink->run();

运行脚本后,我有错误 - Method 'run' not found in class HcTargetLink。错了什么?

2 个答案:

答案 0 :(得分:1)

因为您忘记使用}

关闭该功能
public function run() {
        //do something    
}

答案 1 :(得分:1)

您错过了} paranthesis。试试这个,

public function run() {
    //do something    
}