2016-03-03 3 views
2

У меня очень старый плоский проект PHP. Я хотел бы модернизировать исходные файлы без изменения большой и старой структуры базы данных. Я нашел PHP Framework Symfony Silex. Мне нравится микроструктура этой структуры, которую не так сложно понять.Структура старого проекта с Silex

У меня есть следующая структура файла:

- classes (The business logic) 
- web (index.php and all my controllers) 
- vendors 
  • Как я могу включить мою бизнес-логику от приложения Silex? Должен ли я использовать require_once('classes/file1.php'); в моем index.php?
  • Как я могу получить доступ к базе данных из файлов бизнес-логики?

ответ

1

Переход устаревшего кода на новый фреймворк - сложная задача. Это не будет так просто, как требовать ваши файлы бизнес-логики. Вот как бы я это сделал, если бы был на вашем месте.

Проведите некоторое время Обучение Silex. Начните с создания нового тестового проекта с ним, чтобы увидеть, как он работает. Лучше всего, если вы знаете, как фреймворк предположил, что должен работать, прежде чем пытаться интегрировать его с унаследованной системой. После того, как вы попробовали некоторое время, вы можете решить, подходит ли Silex для вас.

Как только вы знаете, как работает Silex, вы должны получить автозагрузчик Composer, работающий с вашим кодом. Композитор может загружать классы бизнес-логики, не используя require.

Далее следует выяснить, как работать с вашей базой данных . Я вижу два варианта для вас. Вы можете либо перейти к Doctrine, либо использовать существующие классы доступа к базе данных. Экосистема Symfony (и поэтому Silex) ориентирована вокруг ORM доктрины. В зависимости от вашей схемы вы можете написать для нее привязки Doctrine. Однако Silex не привязан к Doctrine, и вы должны иметь возможность использовать существующий код доступа к базе данных. Если вы сохраните существующую систему, вы, вероятно, захотите написать Silex ServiceProvider для ее интеграции.

Далее, самая сложная часть, вероятно, будет перемещать вашу бизнес-логику в Silex контроллеры. Следует иметь в виду, что вам не обязательно сразу переводить весь проект. В зависимости от того, насколько велик ваш проект, вы можете захотеть переместить часть за раз.

+0

У меня есть еще один вопрос. Если я использую мою бизнес-логику как Службы и если мне нужно получить доступ к базе данных в моей службе. Правильный ли доступ к базе данных для передачи «$ app ['db»] в конструктор моей службы? Я попытаюсь использовать «DoctrineServiceProvider» на своих первых шагах. – smartcoderx

+0

Да. Это верно. Способ Silex для этого состоит в создании поставщиков услуг для ваших классов обслуживания. Вот где вы будете строить свои сервисы и передавать '$ app ['db']' в свои конструкторы. –

Смежные вопросы