ФорумПрограммированиеPHP для идиотов → Не срабатывает __autoload() для родительского класса

Не срабатывает __autoload() для родительского класса

  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 6 июля 2010 г. 21:20

    Вызываю дочерний класс и autoload родительского тупа не срабатывает. При чем на друих серверрах срабатывает. У меня убунту 10 с пыхой 5.3.2. Че делать, профи?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 6 июля 2010 г. 21:26, спустя 5 минут 53 секунды

    профи обосрались :)
    Спустя 24 сек.
    у меня такая тема тоже была, не помню как решал. Покаж лоадер и классы
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 6 июля 2010 г. 21:34, спустя 8 минут 11 секунд


    function __autoload($sClass) {
    echo $sClass . '<br>';
    //дальше лоадер. Я думаю не важно что именно там.

    классы:
    class Portal {

    и
    class Builder extends Portal {

    Вызываю:
    $oBuilder = new Builder();

    Получаю:
    Builder

    Fatal error: Class 'Portal' not found in /home/vaseninm/dnportal/core/classes/builder.class.php on line 9
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 6 июля 2010 г. 21:37, спустя 3 минуты 3 секунды

    [var]__autoload[/var] - моветон. Попробуй через [man]spl_autoload_register[/man]
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 6 июля 2010 г. 21:39, спустя 2 минуты 21 секунду

    а если вызвать $oBuilder = new Portal(); — срабатывает?
    Спустя 54 сек.
    стопудово дело в регистре имени файла, где лежит Portal )))
    Спустя 26 сек.
    с тебя плюсик
    ιιlllιlllι унц-унц
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 6 июля 2010 г. 21:40, спустя 1 минуту 15 секунд

    у меня такая тема тоже была, не помню как решал

    вру, было не так:

    child extends parent
    new child // не могу загрузить родителя, так как он реально отсутствует
    // но вываливаюсь с ошибкой загрузки ребенка
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 6 июля 2010 г. 21:45, спустя 4 минуты 39 секунд

    artoodetoo, сработало. Ну плюсег держи. От алекса отрываешься?)
    Дело в том, что функция автолоад вообще не срабатывет. Я специально вывожу названия классов в автолоаде.
    эмм… Родитель синглтон) Можт это что то важное?
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 6 июля 2010 г. 21:52, спустя 7 минут 16 секунд

    хз. в принципе такие связи разруливаются через автолоадеры и неважно __autoload или spl_autoload_register

    ЕСЛИ, как ты пишешь, "на других серверах работает", проблема в путях/регистре — гадалку не зови
    ιιlllιlllι унц-унц
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 6 июля 2010 г. 22:00, спустя 7 минут 40 секунд

    artoodetoo, до этого на 6 серверах работало
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 6 июля 2010 г. 22:14, спустя 13 минут 41 секунду

    в никсах файлы Portal.php и portal.php для системы являются различными, ищи проблему с регистром символов, как сказал р2д2 - 100% что проблема в этом
    Work, buy, consume, die
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 6 июля 2010 г. 22:50, спустя 36 минут 28 секунд

    __autoload - моветон. Попробуй через spl_autoload_register

    сеньк. Запустилось. 0_о
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 6 июля 2010 г. 22:55, спустя 5 минут 18 секунд

    SpartakuS, ну и так, чисто попутно:
    $oBuilder = new Builder(); // не совсем корректный вызов, так как аргументов ты не передаешь для конструктора
    $oBuilder = new Builder; // более корректный


    Ну а по твоему вопросу, то:
    1. Регистр таки важен очень-очень
    2. Если родитель синглтон, то по-идее должно сказать "КУЙ", ибо синглтон - это своего рода статический класс, но точно не уверен, ибо не пробовал такого делать. Делал синглтоном дочерний класс, ибо один хер мне два объекта (синглтоновский родитель и обычный дочерний) нахер не нужны.
    Спустя 236 сек.
    SpartakuS, да и вообще, обясни в чем тогда необходимость подключать родителя, если он и так везде доступен! Если только из-за красоты $this->method() вместо Parent::instance()->method(), то думаю это херовый выигрыш.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 6 июля 2010 г. 23:05, спустя 9 минут 55 секунд

    1. Регистр таки важен очень-очень

    $sClass = mb_strtolower($sClass).'.class.php';

    2. Если родитель синглтон, то по-идее должно сказать "КУЙ", ибо синглтон - это своего рода статический класс, но точно не уверен, ибо не пробовал такого делать. Делал синглтоном дочерний класс, ибо один хер мне два объекта (синглтоновский родитель и обычный дочерний) нахер не нужны.

    Да нормально наследуется, parent::getInstance(); и все проблемы
    Спустя 219 сек.
    Givi, по второму. Системма не моя. Только первый день с ней работаю.
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 6 июля 2010 г. 23:47, спустя 41 минуту 46 секунд

    Нафиг mb_? Если названия классов на инглише только?
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 7 июля 2010 г. 0:04, спустя 16 минут 51 секунду

    используйте нотацию PEAR/zf в именовании классов

Пожалуйста, авторизуйтесь, чтобы написать комментарий!