2016-03-03 70 views
2

我有一个非常老的平面PHP项目。我想在不更改大数据库和旧数据库结构的情况下对源文件进行现代化。我找到了PHP Framework Symfony Silex。我喜欢这个框架的微观结构,它不是很难理解。Silex遗留项目的结构

我有以下文件结构:

- classes (The business logic) 
- web (index.php and all my controllers) 
- vendors 
  • 我如何可以包括从Silex的应用我的业务逻辑?我应该在index.php中使用require_once('classes/file1.php');吗?
  • 如何从业务逻辑文件访问数据库?

回答

1

将遗留代码转换到新框架是一项艰巨的任务。这不会像要求您的业务逻辑文件那么简单。如果我处于你的位置,我将如何去做。

花费一些时间学习Silex。首先建立一个全新的测试项目,看看它是如何工作的。如果你知道框架假设在尝试将其与遗留系统集成之前工作,那么最好。在您尝试了一段时间之后,您可以决定Silex是否适合您。

一旦你知道Silex是如何工作的,你应该得到Composer自动加载器处理你的代码。 Composer可以加载业务逻辑类,而无需使用require

接下来,弄清楚如何使用您的数据库。我看到了两种选择。您可以转换到Doctrine,也可以使用现有的数据库访问类。 Symfony(因此Silex)生态系统围绕着Doctrine ORM。根据您的模式,您可能可以为其编写Doctrine映射。但是,Silex不受限于Doctrine,您应该可以使用您现有的数据库访问代码。如果你保留现有的系统,你可能会想写一个Silex ServiceProvider与它集成。

接下来,最难的部分可能是将您的业务逻辑转移到Silex 控制器。有一点需要记住的是,你不一定需要一次转换你的整个项目。根据项目的规模大小,您可能需要一次转换一个项目。

+0

我还有一个问题。如果我使用我的业务逻辑作为服务,并且我需要访问我的服务中的数据库。访问数据库以将“$ app ['db']”传递到我的服务的构造函数中是否正确?我会尝试在第一步中使用“DoctrineServiceProvider”。 – smartcoderx

+0

是的。那就对了。 Silex的做法是为您的Service类创建一个服务提供者。这就是你构建你的服务并将'$ app ['db']'传递给它们的构造函数的地方。 –