За последние 24 часа нас посетили 21488 программистов и 1015 роботов. Сейчас ищут 723 программиста ...

Получение значения неизвестного свойства неизвестного класса

Тема в разделе "PHP для новичков", создана пользователем Cyrius, 11 июл 2018.

  1. Cyrius

    Cyrius Активный пользователь

    С нами с:
    3 июл 2016
    Сообщения:
    98
    Симпатии:
    4
    Пишу функцию, которая будет вставлять обьект в базу данных
    Но практически на последнем этапе вылетает ошибка
    Catchable fatal error: Object of class User could not be converted to string in C:\OSPanel\domains\oop\functions\insertObject.php on line 22


    PHP:
    1. <?php
    2. /*
    3. Функция по идее должна вставлять в таблицу базы данных свойства передаваемого обьекта
    4. Условие: свойства обьекта должны называться так же как и поля таблицы
    5. */
    6.                           #Обькт, свойства которого необходимо вставить в таблицу
    7.                                    #Обьект соединения с базой данных
    8.                                            #Название таблицы, в которую требуется вставить данные
    9. function insertObjectInBD($object, DB $dbc, string $tableName){
    10.     $class_vars = get_class_vars(get_class($object)); #вернулся массив СВОЙСТВО => ЗНАЧЕНИЕ
    11.  
    12.     $affectedRows = [];
    13.     $sql = "SELECT COLUMN_NAME
    14.            FROM INFORMATION_SCHEMA.COLUMNS
    15.            WHERE table_name = '$tableName'
    16.            AND table_schema = '$dbc->dbname'"; #Вернется массив с названием полей таблицы
    17.  
    18.     foreach($dbc->query($sql) as $columnName){
    19.         foreach ($class_vars as $class_var => $unnecessary) {
    20.    
    21.             if ($class_var == $columnName[0]) {
    22.                 $sql2 = "INSERT INTO $tableName ($columnName[0]) VALUES ('$object->$class_var')";
    23.                 if($dbc->execute($sql2)) {
    24.                    $affectedRows[] = $columnName; #в конце вернем массив, в котором содержаться все поля, в которых были всталенны данные
    25.                }
    26.             }
    27.         }
    28.     }
    29.     if(empty($affectedRows))
    30.         return false;
    31.     else
    32.         return $affectedRows;
    33. }
    Подскажите как правильно сделать эту запись $object->$class_var
     
  2. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    serialize/json_encode($object->$class_var)
     
  3. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    toString
    Serializable
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    PHP:
    1. $sql2="INSERT INTO $tableName ($columnName[0]) VALUES ('{$object->$class_var}')";
     
  5. Cyrius

    Cyrius Активный пользователь

    С нами с:
    3 июл 2016
    Сообщения:
    98
    Симпатии:
    4
    Спасибо всем за ответы