2016-07-25 3 views
0

В настоящее время я немного поиграю с PHP и попытался найти способ преобразования класса в данные, которые я могу сохранить в базе данных (массив/JSON/значение ключа).Php класс для Array/Json и обратно

До сих пор кажется довольно простым в использовании get_obj_vars или преобразованием в массив. Но позже я хочу загрузить данные из базы данных и преобразовать их обратно в класс, который у меня был, поэтому я могу продолжать работать с данными в формате класса.

Пример:

class TestClass { 
    private $name; 
    private $number; 
    private $testClass2; 
    /* getter + setter */ 
} 

class TestClass2 { 
    private $name; 
    private $number; 
    /* getter + setter */ 
} 

$testclass = new TestClass(); 
$testclass2 = new TestClass2(); 
$testclass2->setName("Class2"); 
$testclass2->setNumber(42); 

$testclass->setName("MyName"); 
$testclass->setNumber(23); 
$testclass->setTestClass2($testclass2); 

Теперь я хочу, чтобы преобразовать $ TestClass к чему-то я могу сохранить в базе данных в «ключ-значение стола». После этого я хочу воссоздать класс с данными из базы данных.

+0

Если по крайней мере часть его «кажется, довольно легко», что вы пробовали? – Roope

ответ

1

Я думаю, что вы ищете, как сериализации и десериализируются данных в PHP.

Попробуйте посмотреть на: How to use php serialize() and unserialize()

+0

Да, это отлично выглядит. Есть ли способ, которым я могу определить возвращаемый тип метода unserialize? Поэтому моя IDE может автозаполнять имена методов :). – inf3ction

+0

Не уверен, поддерживает ли ваша IDE - вам нужно будет проверить документы. Обычно в типах запросов IntelliJ (PHP Storm) указываются аннотации @return в блоке doc. Указав правильный тип, IDE должен автоматически выбрать методы класса для автоматического завершения. Надеюсь, это поможет! –

+0

Да, конечно, я могу добавить аннотацию @return. Но thats static, я хотел бы динамически определить тип возврата. Если я unserialize CLASS A, я хочу определить тип возврата как CLASS A. Если i unserialize CLASS B, я хочу определить тип возвращаемого значения как CLASS B. В противном случае мне нужно определить для каждого класса метод с эквивалентным типом возвращаемого значения. – inf3ction

Смежные вопросы