I’m maintaining library written for PHP 5.2 and I’d like to create PHP 5.3-namespaced version of it. However, I’d also keep non-namespaced version up to date until PHP 5.3 becomes so old, that even Debian stable ships it 😉
I’ve got rather clean code, about 80 classes following Project_Directory_Filename naming scheme (I’d change them to \Project\Directory\Filename of course) and only few functions and constants (also prefixed with project name).
Question is: what’s the best way to develop namespaced and non-namespaced versions in parallel?
-
Should I just create fork in repository and keep merging changes between branches? Are there cases where backslash-sprinkled code becomes hard to merge?
-
Should I write script that converts 5.2 version to 5.3 or vice-versa? Should I use PHP tokenizer?
sed? C preprocessor? -
Is there a better way to use namespaces where available and keep backwards compatibility with older PHP?
I don’t think preprocessing the 5.3 code this is a great idea. If your code is functionally identical in both PHP 5.2 and 5.3 with the exception of using namespaces, instead of underscore-separated prefixes, why use namespaces at all? In that case it sounds to me like you want to use namespaces, for the sake of using namespaces..
I do think you’ll find that as you migrate to namespaces, you will start to ‘think a bit differently’ about organizing your code.
For this reason, I strongly agree with your first solution. Create a fork and do backports of features and bugfixes.
Good luck!