Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89

Автоподключение классов

06.04.2016, 17:08. Показов 3240. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал скрипт:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function Autoload($name){
    $class_pieces = explode('\\', $name);
    switch ($class_pieces[0]){
        case 'app':
            $path = __DIR__ . '\\' . implode(DIRECTORY_SEPARATOR, $class_pieces) . '.php';
            if (file_exists($path)){
                require_once $path;
            }
            else {
                 echo "The file $path does not exist";
            }
    }
}
spl_autoload_register('Autoload'); 
$router = new \app\Router();
$router->start();
В части:
PHP
1
2
3
4
5
6
if (file_exists($path)){
                require_once $path;
            }
            else {
                 echo "The file $path does not exist";
            }
Выполняется первое условие. Т.е. файл существует, путь верный. Но дальше вылазит ошибка:
Fatal error: Class 'app\Router' not found in C:\server\Site\OpenServer\domains\rainfo rest\Vasilisk\index.php on line 19
Что не так? Сделал все по уроку. У автора работает.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.04.2016, 17:08
Ответы с готовыми решениями:

Автоподключение
Можно ли как-то сделать автоподключение к серверу при запуске бд или открытии формы?

Автоподключение к wi-fi
Как отключить автоподключение к wi-fi?

автоподключение в фоне
здравствуйте. подключение к интернет по pppoe, для автоподключения оного на старте системы в раздел run реестра прописан rasdial....

33
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
06.04.2016, 22:17
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от pav1uxa Посмотреть сообщение
А Вы каждый раз перед созданием объекта или при других обращениях к классу используете class_exists?
зачем передергивать? ситуации проверки наличия класса возможны. Раз эта функция существует ей могут воспользоваться. ну хорошо, можно и так: напишем доку в которой опишем вызов каких функций в нашем приложении положит его...
0
Эксперт PHP
 Аватар для Fedor Vlasenko
937 / 694 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
06.04.2016, 22:21
@ это единственный способ перехватить критическую ошибку и обработать ее в своем обработчике
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
06.04.2016, 22:25
Цитата Сообщение от wq Посмотреть сообщение
зачем передергивать? ситуации проверки наличия класса возможны. Раз эта функция существует ей могут воспользоваться. ну хорошо, можно и так: напишем доку в которой опишем вызов каких функций в нашем приложении положит его...
Вам написали Выше - подобные проблемы решаются на этапе разработки. Если Вы залили сайт на хостинг, а файл класса не залили - сразу увидите ошибку и исправите. После этого эти ошибки невозможны в принципе. Сам по себе в коде неизвестный класс в процессе пользования сайтом не появится, понимаете?

Как Вы себе это представляете, Вы используете в коде какой то класс, а создать класс забыли? Я не представляю.

Цитата Сообщение от wq Посмотреть сообщение
ну хорошо, можно и так: напишем доку в которой опишем вызов каких функций в нашем приложении положит его...
Это вообще к чему? Естественно обращение к несуществующему классу будет ложить приложение, хоть пишите доку хоть не пишите. А вот обращение к несуществующему файлу ничего не положит, это всего лишь Warning, который опять же, лечится на стадии разработки.
0
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
07.04.2016, 15:16
Цитата Сообщение от pav1uxa Посмотреть сообщение
Естественно обращение к несуществующему классу будет ложить приложение, хоть пишите доку хоть не пишите. А вот обращение к несуществующему файлу ничего не положит, это всего лишь Warning, который опять же, лечится на стадии разработки
Ну, я понял, про плагины вы не слышали...Poznakomlus, вас тоже касается
и главное непонятно упорство достойного другого применения, с попыткой доказать теорию, о том что писать автолоад можно в сокращенном варианте, а не так как нужно, хотя код "так как нужно" будет больше на один оператор

Не по теме:

Цитата Сообщение от Poznakomlus Посмотреть сообщение
@ это единственный способ перехватить критическую ошибку
не единственный

0
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89
07.04.2016, 16:11  [ТС]
Проблема в том, что вариант Poznakomlus, пытается подключить все подряд, если подключать не надо, то выдает ошибку. Если взять мой вариант, и убрать лишнее (проверку), то я могу управлять списком подключений.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
07.04.2016, 16:36
Цитата Сообщение от Vassillissk Посмотреть сообщение
пытается подключить все подряд, если подключать не надо, то выдает ошибку
Это Вы о чем?
0
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89
07.04.2016, 17:23  [ТС]
db::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
Он пытается подключить, и выдает ошибку: не удалось подключить. Если вернуть мой скрипт, то там указывается какие директории надо подключать и все работает.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
937 / 694 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
07.04.2016, 21:00
Цитата Сообщение от wq Посмотреть сообщение
Ну, я понял, про плагины вы не слышали
нет, не слышал. Просвети если знаешь больше.
В php есть расширения (extensions), приходилось писать под OpenCV и Tesseract.
Плагины это ваши заблуждения от фреймворков и библиотек.
Цитата Сообщение от wq Посмотреть сообщение
а не так как нужно
Скажу по секрету, он нужен по сути для разработки и разработчиков.
Цитата Сообщение от wq Посмотреть сообщение
больше на один оператор
Проверка наличия файла тяжелая операция.(А бывают и диски сыпятся)
Цитата Сообщение от wq Посмотреть сообщение
не единственный
PHP
1
require 'test';
а ну ка перехвати, так может писать человек ни разу не пробовавший работать с set_error_handler
Vassillissk, с какого планетария
Цитата Сообщение от Vassillissk Посмотреть сообщение
пытается подключить все подряд, если подключать не надо,
это о чем и это db::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
че не увидел, что нет папки App
Цитата Сообщение от Vassillissk Посмотреть сообщение
$router = new \app\Router();
Цитата Сообщение от Vassillissk Посмотреть сообщение
C:\server\Site\OpenServer\domains\rainfo rest\Vasilisk\index.php
0
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
07.04.2016, 21:10
Цитата Сообщение от Poznakomlus Посмотреть сообщение
А бывают и диски сыпятся
поздравляю, приехали. понимаю что вы экономите деньги используя пхп, но не на столько же.
Цитата Сообщение от Poznakomlus Посмотреть сообщение
Сообщение от wq
не единственный
PHPВыделить код
1
require 'test';
???? это что?
с упорством, с каким вы предлагаете кривокодить, выкидывать элементарные проверки, вы бы уже десять программ написали. Но доказывать чушь о том что от file_exists диски сыпятся куда интереснее
0
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89
07.04.2016, 21:14  [ТС]
Я вообще не понял, о чем вы. Это моя первая работа. Точнее попытки ее сделать. Если использовать ваш код, то при добавлении строчки
PHP
1
db::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
Появляется ошибка в месте:
PHP
1
include str_replace('\\', '/', $class) . '.php';
Если использовать мою версию:
PHP
1
2
3
4
switch ($class_pieces[0]){
        case 'app':
            require_once __DIR__ . '\\' . implode(DIRECTORY_SEPARATOR, $class_pieces) . '.php';
    }
То ошибки нет. Я полагаю, что это из-за того, что указанно подключать только при "case 'app':".
0
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
07.04.2016, 21:21
Poznakomlus, сразу не понял к чему вы это
Цитата Сообщение от Poznakomlus Посмотреть сообщение
require 'test';
но вы же утверждали что собака это "единственный" способ.
PHP
1
2
3
4
5
6
ob_start();
register_shutdown_function(function(){
    ob_end_clean();
    echo 'собака не единственный способ ловить фатальные ошибки. Прежде чем начинать сокращать php его следует хотя бы изучить';
});
require 'test';
0
1 / 1 / 0
Регистрация: 12.12.2015
Сообщений: 89
07.04.2016, 21:25  [ТС]
wq, прошу вас перестать ругаться и перейти в мою следующую тему, она актуальней.
Обращение к разным классам из класса
0
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
07.04.2016, 21:28
:black_eye.:
0
Эксперт PHP
 Аватар для Fedor Vlasenko
937 / 694 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
07.04.2016, 21:41
Цитата Сообщение от wq Посмотреть сообщение
но вы же утверждали что собака это "единственный" способ
именно так потому как код не работает в командной строке (CLI)
и тогда придется писать правила предложенные вами
PHP Fatal error: require(): Failed opening required 'test'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.04.2016, 21:41

Автоподключение к нэту
Как сделать чтобы нэт включался при включении компа?

Автоподключение rvm
Что бы можно было взаимодействовать с рельсами, при открытии терминала мне нужно выполнять source ~/.rvm/scripts/rvm Куда бы можно эту...

Автоподключение проектора
Имеется ноутбуки с видеочипсетами intel и nvidea на XP которые нужно подключать к проекторам. Люди что пользуются мультимедией...

Windows 10 автоподключение wifi
Вобщем хотел узнать как сделать что бы когда виндовс 10 загрузился чтобы автоматом не только шло подключение к интернету но и автоматом...

Автоподключение по telnet, ssh
Добрый день! подскажите, как создать кнопку запуска на рабочем столе, чтобы при выполнении открывался терминал и атоматически коннектился...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru