web-dev-qa-db-ja.com

クラスには1つの抽象メソッドが含まれているため、抽象として宣言するか、残りのメソッドを実装する必要があります

致命的なエラー:クラス検証には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");
?>
6
user3656133

エラーメッセージをおろそかにします。

致命的なエラー:クラス検証には1つの抽象メソッドが含まれているため、抽象として宣言するか、21行目のC:\ wamp\www\jump\task3\day8\abstract.phpに残りのメソッド(BaseValidator :: SetRange)を実装する必要があります。

壊す

  1. クラスValidateには、_1_抽象メソッドのみが含まれています。
  2. Validateが拡張するBaseValidatorであるクラスには、_2_抽象メソッドが設定されています。
  3. つまり、元のクラス(Validate)では、2番目の抽象メソッド(この場合は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";
            }
        }
    }
_

19
Darren