Неустранимая ошибка: абстрактный класс не найден в другом классе - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть абстрактный класс 'AbstractClassA':

abstract class AbstractClassA {
    //some code...
    public static function isValidID($id) { ... }
}

И еще один абстрактный класс:

abstract class AbstractClassB extends AbstractClassA {
    const id = 1111;
}

Затем, когда я объявляю следующее в третьем классе:

class OrdinaryClass {
    public static function canDoIt($id) {
        return AbstractClassB::isValidID($id);
    }
}

Затем я получаю следующую ошибку, когда проверяю следующее:

OrdinaryClass::canDoIt(1111);

"Неустранимая ошибка: ошибка Uncaught: класс" AbstractClassB "не найден в OrdinaryClass.class.php в строке ##"

Что я делаю не так?

1 Ответ

0 голосов
/ 18 декабря 2018

При наличии файлов в разных файлах, вы должны require их, прежде чем использовать:

<?php

require_once "/path/to/AbstractClassA.php";
require_once "/path/to/AbstractClassB.php";

class OrdinaryClass {
    public static function canDoIt($id) {
        return AbstractClassB::isValidID($id);
    }
}

Существует возможность зарегистрировать автозагрузчик , чтобы сделать это автоматически.

// autoloader.php

spl_autoload_register(function ($className) {
    include __DIR__ . '/' . $className . '.php';
});

// OrdinaryClass.php
require 'autoloader.php';

class OrdinaryClass {
    /* ... */
}
...