Как / можно ли определить константу по запросу константы? - PullRequest
0 голосов
/ 04 октября 2018

Хорошо, вот и все.Это то, что я сейчас использую, работает отлично, но я зациклился на этой идее ...

class Estr {

    public static function __callStatic ( $name, $arguments ) {
        $class_vars = get_class_vars ( get_called_class ( ) );
        if ( is_array ( $class_vars ) && sizeof ( $class_vars ) > 0 ) {
            foreach ( $class_vars as $key => $value ) {
                if ( strtolower ( $key ) == strtolower ( $name ) ) {
                    return $key;
                }
            }
        }
    }
}



class Relationship extends Estr {

    public $alternate;

}

Это позволяет мне звонить;

var_dump ( Relationship :: alternate ( ) ); // response "alternate"

Все хорошои отлично.Однако, когда я начал, я хотел получить следующий результат:

var_dump ( Relationship :: alternate ); // response "alternate"

и Я хочу, чтобы мой класс отношений был либо:

class Relationship extends Estr {

    public $alternate;

}

или

class Relationship extends Estr {

    const alternate;

}

Там, где класс Estr обрабатывает, возвращая имя переменной / константы в качестве значения, с чистым макетом OOP.(например, «const alternate =« alternate »;» и «const alternate = null;» не нужны.)

Я попытался найти несколько решений, и самое близкое к достижению цели - попытка пойматьошибка вызова неопределенной константы, при этом возвращая значение.Однако я так и не смог достичь желаемой иерархии классов.

Спасибо за лапшу, наслаждайтесь головоломкой!XD

PS Или, что еще лучше, как я могу статически вызвать несуществующую константу класса и обработать ошибку в этом классе?Например;Отношения :: альтернативный ответ;«ошибка в классе отношений»

Есть ли способ перехватить вызов для «определенной константы», даже если по природе они должны существовать?(Если нет, то здесь можно ответить; PHP => Вызов несуществующих констант класса, способ обработки? )

...