Я работаю над настраиваемым DB Table Mapper в PHP. Возможно ли в PHP сделать что-то вроде «виртуальных методов» для доступа к свойствам? Подобно методам, которые на самом деле не существуют.Динамические методы PHP
Пример: «Пользователь» класса имеет свойство «$ name», я не хочу создавать метод «Получить» для этого, но я хочу получить доступ к свойству через виртуальный метод, например : $ user-> GetName();
Я думал о работе с конвенциями. Поэтому каждый раз, когда вы вызываете «виртуальный» метод, вы его поймаете и проверяете, имеет ли он префикс «Get» или «Set».
Если у него есть префикс «Get», вы удаляете часть после «Get» и делаете ее строчной буквой, поэтому у вас есть свойство, к которому вы хотите получить доступ.
Моя идея (псевдокод):
public function VirtualMethodCalled($method_name)
{
//Get the First 3 Chars to check if Get or Set
$check = substr($method_name, 0, 3);
//Get Everything after the first 3 chars to get the propertyname
$property_name = substr($method_name, 3, 0);
if($check=="Get")
{
return $this->{$property_name};
}
else if($check=="Set")
{
$this->{$property_name};
$this->Update();
}
else
{
//throw exc
}
}
PHP имеет некоторые [магические методы] (http://php.net/__get), которые вы можете использовать. –
Возможно, вы можете заглянуть в закрытие. Закрытие в PHP - это одноразовые * функции/методы *, которые фактически не зарегистрированы в глобальном пространстве имен. Отбросьте функции, если хотите. Обычно используется для расширения функциональности для текущей функции/метода. См. Пример № 3: http://php.net/manual/en/functions.anonymous.php – Marcus