Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Jean

Такая проблема как __PHP_Incomplete_Class_, которая возникает при десериализации.

22.07.2010, 09:45. Показов 1626. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть такая проблема как __PHP_Incomplete_Class_, которая возникает
при десериализации.
Я нашел решение этой проблемы использовав функцию unserialize_callback_func, и там делаю Include, зато теперь возникает такая проблема как 'cannot redeclare class ....', можно было бы использовать инструкцию include_once или require_once, но тогда не проходит десериализация

Если кто сталкивался с такой проблемой, то подскажите как избавились
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.07.2010, 09:45
Ответы с готовыми решениями:

Возникает исключение при десериализации
Здравствуйте. Решил заняться изучением C# и столкнулся с проблемой. При десериализации классов появляется исключение в котором сказано что...

При построении графиков возникает вот такая ошибка
Доброго времени суток. У меня возник следующий вопрос.. Работаю в MathCad 15.0 и при построении графиков возникает вот такая ошибка (график...

При копировании(переброски) видео файлов с диска С на УСБ хард возникает такая ошибка
Доброе время суток Уважаемые дамы и господа! у меня проблемы! весь интернет облазил нашёл вас и хочу поделиться своей проблемой и надеюсь...

9
0 / 0 / 2
Регистрация: 20.07.2010
Сообщений: 52
22.07.2010, 10:53
unserialize_callback_func - это не функция, а одна из опций php.ini
как у вас применяется она?
0
Jean
22.07.2010, 12:31
ini_set('unserialize_callback_func','myc allback');

function mycallback($classname) {

include '....';
}
Jean
22.07.2010, 12:32
собственно везде в хелпах так и советуют её использовать
0 / 0 / 2
Регистрация: 20.07.2010
Сообщений: 52
22.07.2010, 13:56
а где потом и как применяется данная функция, поскольку ошибка говорит о том, что класс пытаются переопределить, что может говорить о многократном использовании функции mycallback, если уж на то пошло, то использовать её нужно так:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
classa.php
  <?
    class A {
      var $title = 'class A';  
      function show_title () {
        echo $this->title;
      }
    };
  ?>
classb.php
  <?
    class B {
      var $title = 'class B';
      function show_title () {
        echo $this->title;
      }
    };
  ?>
callback_func.php
  <?
    function mycallback ($classname) {
      include ($classname);
    }  
  ?>
unserialize.php
  <?
    include ('callback_func.php');
 
    ini_set ('unserialize_callback_func', 'mycallback');
    mycallback ('classA.php');
 
    $sA = 'O:1:'a':1:{s:5:'title';s:7:'class A';}'
    $a = unserialize ($sA);
    $a->show_title ();
    echo '
';
 
    mycallback ('classB.php');
    $sB = 'O:1:'b':1:{s:5:'title';s:7:'class B';}'
    $b = unserialize ($sB);
    $b->show_title ();
    echo '
';
  ?>
из вашего же кода не понятно, что конкретно вы подключаете, но явно не файл с классом $classname
0
Jean
22.07.2010, 14:21
вообще внутри mycallback() я подключал все необходимые мне файлы,
потому что эта функция вызывается автоматически при десериализации
и параметром туда передается имя Класса, по нему я никак не могу узнать какой файл подключать.(хотя в принципе можно сделать чтобы по имени класса легко находить имя файла)

Да и даже если ваш способ сработает, мне может несколько раз потребоваться десериализовать один и тот же нужный класс - и проблема то все равно возникнет. - я несколько раз буду подключать один и тот же файл
0 / 0 / 2
Регистрация: 20.07.2010
Сообщений: 52
22.07.2010, 14:33
во-первых, функция вызвается перед десериализацией,
во вторых, в неё передаётся имя класса только для смысловой нагрузки
в третьих, даже если понадобится 100 раз десериализовать один и тот же нужный класс, всё равно подключение файла с определением этого класса происходит один раз, ведь перед каждым применением функции я не пишу include.
а из ваших слов я понял, что вы применяете mycallback несколько раз с одними и теми же параметрами, отсюда и вытекающие последствия
по моей схеме проблем ни с чем возникнуть не может
0
Jean
22.07.2010, 14:58
ну может я туплю, но сам я функцию mycallback() не вызываю. Она вызывается автоматически - в этом я точно уверен.
И если я 100 раз буду десериализовывать один и тот же класс, эта функция вызовется сто раз, и сто раз подключит один и тот же файл
сам же я ее вызвать не могу, потому что точно не знаю, какой именно класс сейчас будет десериализовываться

небольшая ремарка
на самом деле, я вытаскиваю класс из сессии, но как я заметил он лежит там в сериализованном виде. ну и проблемы возникают те же, что и при простой десериализации
0 / 0 / 2
Регистрация: 20.07.2010
Сообщений: 52
22.07.2010, 15:18
без разницы откуда вытаскивать класс, а за место сессий раньше использовалась сериализация, и сессии на основе неё сделаны, только сессии необходимы для защиты данных, чтобы ни одна св... не догадалась как файл называется.
короче, аська есть?
0
Jean
22.07.2010, 15:32
173156899
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2010, 15:32
Помогаю со студенческими работами здесь

Подскажите пожалуйста в чем возникает проблема при импорте модуля
Добрый день, нуждаюсь в помощи. Начал не так давно изучать python и сделал для себя небольшой скрипт, где смотрю по пингу доступность...

Почему возникает такая ошибка?
Это приложение работает так: 1)вводиться текст в первое текстовое поле; 2) нажимается кнопка копи; 3)потом нажимается кнопка паст; ...

При сохранении битмапа возникает такая ошибка: "В GDI+ возникла ошибка общего вида"
помогите пожалуйста при сохранении битмапа возникает такая ошибка: &quot;В GDI+ возникла ошибка общего вида.&quot; делаю так: var bmp =...

При установки с диска любой игры или програмы возникает проблема.
При установки любой игры или программы пишет&quot;файл поврежден или не хватает места&quot;.пробовал всё.винду менял,винчестер раз 10...

Исправить ошибку, которая возникает при выполнения запроса (SqlCom.ExecuteNonQuery())
Работаю с бд Access первый раз! Помогите исправить ошибку которая возникает при выполнения запроса (SqlCom.ExecuteNonQuery()). Я так...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru