在多个PHP项目中同步核心文件的最佳方法?

  • I have a PHP Platform that I've built.
  • I use a copy of that project for each project I do.
  • I add assets and configure each project with it's own content.
  • Configuring a project changes some of the core files which contain the configuration defaults.

When I update core files in the library/platform itself and I want to disseminate those changes to all of the other projects using that platform, what would be the best approach?

I think it may be worth noting that I have each project as an SVN project in Eclipse.

UPDATED DETAILS:

  • The platform is based on AMFPHP 1.9.
  • AMFPHP has a services folder.
  • I have to put core services in the services folder as well as implementation specific services and therefore cannot achieve complete separation between the "library" and the "application".
  • Also, the default configuration files need to be in the "platform" folder so they can be easily distributed with it, but when configuration is changed, those files become "implementation specific" as well.

Is there a solution that will allow me to designate certain files to update?

Take a look at the use of svn:externals. Configure each secondary project with your core libraries as an external.

Excellent question, here's the way I solved this problem with my own PHP framework.

If you have all the project-specific and core files mixed together, and platform code interspersed with your project code, it's going to be really difficult to update the core code to all of your projects.

The best way to get around this is to make it easier for svn (or git, or any other versioning software) to update your files: if they're all neatly organized, with project and core files in their respective places. Let me give you an example to clarify.

Put all of the core files of your framework in this directory:

/App/FrameworkName

Here you can place core classes, functions, and other code that won't change for all of your different projects.

Then, any project-related content, settings or pages go in:

/App/Project

Here, you have all of the data that your projects use.

With this system, if you add a feature to your platform, all you have to do is svn the latest version of your framework to /App/FrameworkName, and your project will be using up-to-date code.

My programs are usually organised in two parts. the core framework folder, and the addon folders.my framework (in house) does all the initial work then loads the addon for additional functionality.

For example, the framework deals with all the user auth , the addon provide additional crud functions the each project needs.

That way, i can keep them in separate repository. and the framework can be checked out and used for other projects.