【问题标题】:Class contains 1 abstract method and must therefore be declared abstract or implement the remaining methods [closed]类包含 1 个抽象方法,因此必须声明为抽象方法或实现其余方法 [关闭]
【发布时间】:2014-07-09 15:03:03
【问题描述】:

致命错误:类 Validate 包含 1 个抽象方法,因此必须在第 21 行的 C:\wamp\www\jump\task3\day8\abstract.php 中声明为抽象方法或实现其余方法 (BaseValidator::SetRange)

<?php
    abstract class BaseValidator
    {
        abstract function Validate($string);
        abstract function SetRange($string);
    }
    class Validate extends BaseValidator
    {
        public function Validate($string)
        {
            if (!preg_match('/[^A-Za-z]/', $string))
            {
                echo "'{$string}' contains only alphabets!";
            } 
            if (is_numeric($string))
            {
                echo "'{$string}' Conatins No. Only!<br/>";
                echo '<br>';
            }
        }
    }
    class setRange extends BaseValidator
    {
        public function SetRange($string)
        {
            if(!(strlen($string)>4 && strlen($string)<10))
            {
                echo "You are not in range of 4-10";
            }
        }
    }
    $obj = new Validate();
    $obj = $obj->Validate("Hello");
    $obj = new SetRange("hello");
    $obj = $obj->SetRange("hello");
?>

【问题讨论】:

标签: php fatal-error


【解决方案1】:

为你整理错误信息:

致命错误:类 Validate 包含 1 个抽象方法并且必须 因此被声明为抽象或实现其余方法 (BaseValidator::SetRange) 在 C:\wamp\www\jump\task3\day8\abstract.php 第 21 行

故障

  1. 你的类Validate只包含1抽象方法。
  2. Validate 扩展的类BaseValidator 具有2 抽象方法集。
  3. 这意味着您的原始类 (Validate) 需要在其中指定第二个抽象方法(在本例中为 setRange())。

这意味着你可以简单地在你的类中设置函数但让它为空:

class Validate extends BaseValidator
    {
        public function Validate($string)
        {
            if (!preg_match('/[^A-Za-z]/', $string))
            {
                echo "'{$string}' contains only alphabets!";
            } 
            if (is_numeric($string))
            {
                echo "'{$string}' Conatins No. Only!<br/>";
                echo '<br>';
            }
        }

        public function setRange($string) {}
    }

旁注:

您的setRange 类需要与上述相同,因为它扩展了您的BaseValidator 类。

class setRange extends BaseValidator
    {
        public function Validate($string){}

        public function SetRange($string)
        {
            if(!(strlen($string)>4 && strlen($string)<10))
            {
                echo "You are not in range of 4-10";
            }
        }
    }

Example

【讨论】:

  • 谢谢兄弟,我明白了你的想法,非常感谢@darren,请帮助我如何调用 setRange($string) 函数
  • @user3656133 你到底需要setRange() 做什么?它相当简单:$obj-&gt;setRange('range to set or something?')?
  • 我已经看到了解释如何添加方法的答案,并且我已经看到了解释如何使类抽象的答案(错误消息中提出的另一个选项),但我还没有看到答案解释了我应该如何在两种解决方案之间做出决定......有助于我更好地理解含义的东西 - 我必须触摸我没有编写的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多