致命错误:未捕获错误:调用未定义的方法Idiom :: months()

时间:2018-01-27 19:23:31

标签: php oop

我最近开始对OOP更感兴趣,所以我尝试在我的新项目上实现它。

课程成语的目的是帮助我更快地获得所有成语和翻译信息。

我的班级现在看起来像这样:

class Idiom
{
    var $idiom;

    public function setIdiom($newIdiom)
    {
        $this->idiom = $newIdiom;
    }

    public function getIdiom()
    {
        return $this->idiom;
    }

    public function month($idiom, $month)
    {
        switch ($idiom) {
            case 'pt':
                switch ($month) {
                    case 'January':
                        $chosen_month = 'Janeiro';
                        break;
                    case 'February':
                        $chosen_month = 'Fevereiro';
                        break;
                    case 'March':
                        $chosen_month = 'Março';
                        break;
                    case 'April':
                        $chosen_month = 'Abril';
                        break;
                    case 'May':
                        $chosen_month = 'Maio';
                        break;
                    case 'June':
                        $chosen_month = 'Junho';
                        break;
                    case 'July':
                        $chosen_month = 'Julho';
                        break;
                    case 'August':
                        $chosen_month = 'Agosto';
                        break;
                    case 'September':
                        $chosen_month = 'Setembro';
                        break;
                    case 'October':
                        $chosen_month = 'Outubro';
                        break;
                    case 'November':
                        $chosen_month = 'Novembro';
                        break;
                    case 'December':
                        $chosen_month = 'Dezembro';
                        break;
                }
                break;
        }
        return $chosen_month;
    }
}

我使用这段代码访问:

for ($m=1; $m<=12; $m++) {
    $month = date('F', mktime(0,0,0,$m, 1, date('Y')));
    $idiom = new Idiom();
    echo '<option value="'.$m.'">'.$idiom->months('pt',$month).'</option>';
}

但我也尝试过使用这种方法:

for ($m=1; $m<=12; $m++) {
    $month = date('F', mktime(0,0,0,$m, 1, date('Y')));
    echo '<option value="'.$m.'">'.Idiom::months('pt',$month).'</option>';
}

但是它们都触发了错误:致命错误:未捕获错误:调用未定义的方法Idiom :: months()。

我目前正在Xampp上运行PHP 7.2.0。 我遵循的指南是:https://www.killerphp.com/tutorials/php-objects-page-1/

感谢您的帮助和建议,我们也非常欢迎。

1 个答案:

答案 0 :(得分:0)

您有拼写错误。您在班级中定义的公共方法是月份而不是月份。 public function month($idiom, $month){}