Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для bogdan_017
21 / 21 / 19
Регистрация: 18.03.2014
Сообщений: 148

Не происходит автозагрузка классов в файле, не содержащем spl_autoload_register, но выполняющимся позже

03.09.2016, 20:29. Показов 1279. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане!

Есть проблемка при автозагрузке классов. Задача, например, регистрация нового пользователя при переходе с главной страницы.

В index.php прописан следующий код (скрипт, инициализирующий загрузку классов, и небольшая html-страничка, аля главная страница на каком-то сайте):

index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
//директория с классами
define('LIB', __DIR__ . DIRECTORY_SEPARATOR . "lib" . DIRECTORY_SEPARATOR); 
 
// написали функцию автозагрузки
spl_autoload_register(function ($className) { 
    return require_once LIB . $className . ".php";
});
 
//для проверки работы автозагрузки (там все равно стоит заглушка. Банальный return $some_text_string)
echo \core\TestClass::registry(); 
?>
 
 
 
<!-- доктайп, html-тег, head-тег -->
<body>
    <a href="registration_form.html">Дружненько регистрируем нового юзверя</a>
</body>
</html>
Далее по нажатию на ссылку переходим на html-страничку с формой регистрации. Для упрощения на форме только поле с userName.

registration_form.html
HTML5
1
2
3
4
5
6
7
8
9
10
<!-- доктайп, html-тег, head-тег -->
<body>
<!-- тут простенькая формочка, особо смотреть нечего -->
    <form action="register.php" method="post">
        <label for="user-name">Имя пользователя</label>
        <input type="text" id="user-name" name="user-name">
        <input type="submit" value="send" name="send">
    </form>
</body>
</html>
Далее заполняем форму. Вводим юзверь_нейм. Нажимаем кнопочку. Переходим на обработку формы в файле register.php.

register.php
PHP
1
2
3
4
5
6
7
8
9
10
<?php
if (isset($_POST["send"])) {
    $var = \core\TestClass::registry(); //замечу, тут та же самая функция, которая вызывалась в index.php
    echo $var;
}
else {
// вписано для дебага
    print_r($_POST);
    echo "not isset";
}
В итоге ловлю fatal error, class "TestClass" not found. Не совсем понимаю почему.

Что происходит в моей голове (если кому-то интересно):
Кликните здесь для просмотра всего текста
По идее в index.php у меня глобальное пространство имен. Значит, ф-я автозагрузки должна работать везде, тем более, что в register.php я другое пространство не объявляю. С путями и функцией автозагрузки проблемы нет, т.к. в index.php все работает, а register.php находится в той же папке. Писать аналогичную функцию для каждого файла||скрипта проекта... ну не путь джедая. В общем запутался. Гуглил, но не нагуглил.


локальный сервер и версия php:
Кликните здесь для просмотра всего текста
1.xampp
2. php 7.0.9


Может кто-то более опытный что-то подскажет)
Заранее благодарю

P.S. На всякий случай прикрепляю архивчик со всеми нужными файлами.
Вложения
Тип файла: zip test.zip (2.2 Кб, 1 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.09.2016, 20:29
Ответы с готовыми решениями:

Автоматическая загрузка классов с пом. spl_autoload_register()
Зачем нужна, если можно просто и явно использовать include, и часто ли применяется? (На форуме тем не нашёл).

Автозагрузка классов
Введение: В PHP можно определить функцию __autoload() которая автоматически вызывается при создании экземпляра неизвестного интерпитатору...

При запуске компьютера происходит автозагрузка сайта zivilingamer.com
Всем добрый вечер, у меня возникла такая проблема: при запуске компьютера автоматически загружается сайт zivilingamer.com; пробовал...

2
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
04.09.2016, 06:28
А какое отношение имеет index.php к register.php? Это два разных скрипта, которые никак не пересекаются. Естественно, что второй ничего не знает об автозагрузке.
1
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
04.09.2016, 07:08
Цитата Сообщение от bogdan_017 Посмотреть сообщение
По идее в index.php у меня глобальное пространство имен. Значит, ф-я автозагрузки должна работать везде
Кто вам это сказал? У вас разве одна точка входа? Нет. Соответственно, выше вам уже ответили.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2016, 07:08
Помогаю со студенческими работами здесь

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

Удаление записи в файле, содержащем структуры
Как удалить запись в файле, который содержит структуры?

При загрузке компьютера происходит автозагрузка сайта dinoraptzor.org
Здравствуйте, уважаемые форумчане! Надеюсь на вашу помощь в борьбе с такой вот проблемой: происходит автозагрузка сайта dinoraptzor.org, ...

Выравнивание столбцов в файле, содержащем числа различной длины
Всем добра! Вообщем, предстоит мне довольно интересная задачка. Есть файл, в нём произвольное количество строк произвольной длины из...

Найти в файле, содержащем текст программы на Паскале, идентификаторы констант
SeekConstant(f), которая находит в файле, содержащем текст программы на Паскале, идентификаторы констант


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru