Все ли сгенерированные классы Doctrine должны находиться в каталоге приложения Doctrine? - PullRequest
0 голосов
/ 30 марта 2010

Я хочу использовать одну установку Doctrine на нашем сервере и обслуживать несколько веб-сайтов. Естественно, модели должны храниться в папке models веб-сайтов.

У меня все (и не работает) вот так:

Доктрина @

/CustomFramework/Doctrine

Веб-сайты @

/var/www/vhosts/custom1.com/
/var/www/vhosts/custom2.com/

Генерация работает нормально, все модели поставляются в /application_folder/models и /application_folder/models/generated для правильного веб-сайта.

Я добавил Doctrine :: loadModels ('path_to_models') в файл начальной загрузки для каждого веб-сайта, а также зарегистрировал автозагрузку.

Но ....

Это код автозагрузчика:

public static function autoload($className)
{
    if (strpos($className, 'sfYaml') === 0) {
        require dirname(__FILE__) . '/Parser/sfYaml/' . $className . '.php';
        return true;
    }

    if (0 !== stripos($className, 'Doctrine_') || class_exists($className, false) || interface_exists($className, false)) {
        return false;
    }

    $class = self::getPath() . DIRECTORY_SEPARATOR . str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';

    if (file_exists($class)) {
        require $class;

        return true;
    }

    return false;
 }

Я тупой, или автозагрузчик действительно делает это:

$class = self::getPath() . DIRECTORY_SEPARATOR . str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';

или, другими словами: требуется ли от меня, чтобы ВСЕ мои сгенерированные классы доктрин были в каталоге приложения Doctrine? Или, другими словами, мне нужна отдельная установка Doctrine для каждого веб-сайта?

Я получаю сообщение об ошибке, что класс BaseXXX не может быть найден. Таким образом, автозагрузка не работает правильно. Я действительно надеюсь, что я делаю что-то не так .. кто-нибудь?

1 Ответ

2 голосов
/ 30 марта 2010

Начиная с Doctrine 1.2, автозагрузка моделей обрабатывается другим автозагрузчиком, Doctrine_Core::modelsAutoload. Это позволяет разделить загрузку вашей библиотеки и загрузку моделей (если вы хотите использовать какой-либо другой автозагрузчик для загрузки классов библиотеки).

...