Сделать не наследуемые методы класса в php - PullRequest
1 голос
/ 14 июня 2019

У меня есть базовый класс (БД), который наследуется многими другими классами. Проблема в том, что я не хочу наследовать методы класса БД. Но я хочу, чтобы они были общедоступны для пользователя.

Я поставил им ключевое слово 'final', но только оно не позволяет детям перезаписывать методы.

<?php

/*
 * DB class for MySQL server
*/
abstract class DB {
    protected static $return        = 'fetch_assoc';
    protected static $db            = null;
    protected static $table_prefix;
    protected static $return_type   = array(
        'fetch_lazy'    => 1,
        'fetch_assoc'   => 2,
        'fetch_num'     => 3,
        'fetch_both'    => 4,
        'fetch_obj'     => 5,
        'fetch_bound'   => 6,
        'fetch_column'  => 7,
        'fetch_class'   => 8,
        'fetch_into'    => 9,
        'fetch_func'    => 10,
        'fetch_named'   => 11
    );

    final static function connect (string $db_key) {
        ...
    }

    final static function beginTransaction () {
        ...
    }

    final static function rollback () {
        ...
    }

    final static function commit () {
        ...
    }

    final static function close () {
        ...
    }
}

Итак. Я хочу, чтобы дети могли видеть переменные БД, но я хочу, чтобы мои методы мог использовать только пользователь. Как сделать мои методы не наследуемыми, потому что я не хочу, чтобы дети их видели?

...