Хорошо, вот и все.Это то, что я сейчас использую, работает отлично, но я зациклился на этой идее ...
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 => Вызов несуществующих констант класса, способ обработки? )