За последние 24 часа нас посетили 72798 программистов и 1648 роботов. Сейчас ищут 980 программистов ...

Namespace и class not found

Тема в разделе "PHP для новичков", создана пользователем TigerZaka, 16 мар 2015.

  1. TigerZaka

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

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    Всем привет!

    Помогите разобраться с пространствами имен

    У меня есть абстрактный класс AbstractSource
    Код (Text):
    1. namespace Main\Source;
    от которого наследуется класс Train
    Код (Text):
    1. namespace Main\Source\Train;
    Я создал index.php следующего содержания:
    Код (Text):
    1.  
    2. $train = new \Main\Source\Train\Train();
    Но мне кидает ошибку:
    Код (Text):
    1.  
    2. Class 'Main\Source\Train\Train' not found
    Что я делаю не так?
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    У тебя есть метод Train() в классе Train?
     
  3. TigerZaka

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

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    нет

    Добавлено спустя 1 минуту 25 секунд:
    если добавить
    Код (Text):
    1.  
    2. require_once 'AbstractSource.php';
    3. require_once 'Train.php';
    то ошибки уходят, получается без require или include не обойтись?
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  5. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Может я что то не понимаю (бошка трещит), но разве не:
    Код (PHP):
    1. $train = new \Main\Source\Train(); 
     
  6. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    если у тебя более одного файла, то не обойтись )))
    другое дело, что include достаточно одного на всех — в функции-автолоадере классов.
    http://php.net/spl_autoload_register
     
  7. TigerZaka

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

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    Спасибо! Теперь есть от чего оттолкнуться