Задать вопрос
@AnonymIty
Так себе кодер

PHP getter setter виде функции и с привязкой параметра объекта?

Заранее скажу вопрос не очень тупо как кажется но интересная идея для реализации (пока что не будем думать и безопасности и всякое связанном ним)

Вопрос в том можно ли при инициализации класса (__construct) передавая ему массив и после создание вызвать параметры той что массиве вернут или задать как getter setter но в виде action?

ну типа это:
$object = new Someclass(['id'=>1,'title'=>'Lorem ipsum set','category'=>2,'category_title'=>'Article']);
$title = $object->getTitle();
$object = $object->setTitle($title."some edits");


я точно не знаю возможно-ли это при рантайме сделать такой генератор но дошёл до вот такого решении
class Tester
{
	function __construct($arr)
	{
		foreach ($arr as $key => $value) {
			$this->$key = $value;
			$global = $value;
			$this->{"get".ucfirst(strtolower($key))} = (function() { return $this->{$value}; });  // если сделать return __FUNCTION__ то вернёт значение {closure}
		}
	}
    public function __call($method, $args)
    {
        if (isset($this->$method)) {
            $func = $this->$method;
            return call_user_func_array($func, $args);
        }
    }
}
$tester = new Tester(['id'=>1,'title'=>'Lorem ipsum set','category'=>2,'catTitle'=>'Article']);
echo $tester->getTitle();  // null


создать отдельный класс не вариант в БД есть очень много разные данные для каждой сделать не возможно!
  • Вопрос задан
  • 142 просмотра
Подписаться 1 Сложный 2 комментария
Решения вопроса 1
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
https://www.php.net/manual/ru/language.oop5.magic.php
Вообще это легко реализуется
Конструктор записывает массив, делается магический __call

https://github.com/Compolomus/Template/blob/master...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
БД есть очень много разные данные для каждой сделать не возможно!
не верно ты дядь федор этот бутерброд жрешь - надо не магией баловаться, а написать "scaffold" - генератор классов-моделей на основе данных таблиц. смотри gii в Yii2
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы