I've made my site, but I'm trying to integrate MyBB in as well. Problem is, they use the function redirect() and add_breadcrumb(), and so do I. When I include my header file into MyBB (to get the user info or whatever) it includes my function file, which then gives me a 'cannot redeclare' etc.
Is there a way to either overwrite or 'cancel out' my functions? I don't really want to have to fundamentally change the entire codebase especially since things like redirect() are pretty common names.
I've looked into namespaces but don't know if they're perfect for my problem. I'm also only using PHP 5.2.5 at the moment so I don't think they're available.
Now, I don't know how your Site structure looks like, but when you want to "cancel out" your functions you could simply write them in an external file, and just include em when you need them || when you do not include the MyBB functions.
Or you could simply rename your functions? I mean it's not to difficult - just search and replace -> enter the function name like "redirect(" and replace with "own_redirect(" (or some better fitting name ;) ).
Not sure wheter there is an simpler method.
Rename them to less generic names, such general naming indicates a bad general naming schema. You could overload functions (given that they have a different number of arguments) or use namespaces, but both would be bad practice.
For the purpose described, using namespaces is probably not the best way to solve a naming conflict.
The primary purpose of namespaces is to avoid loading lots of functions that you do not need, not to resolve ambiguous names (not to say that is doesn't accomplish that, it just shouldn't be used solely for it).
I always thought it was to resolve ambiguous names, and things like include() and require() were used to avoid loading lots of functions that you do not need.
$user_registration = new user::register; $new_session = new session::register;
$mybb = new mybb::redirect; $lucid = new lucid::redirect;
Seems namespaces would be the perfect alternative to search and replace?
Coming from a C++ brackground, that is not the case. In C++, many standard includes (Iostream for example) have hundreds of functions covering both in and out functions. When you just want to output data without loading the cIn functions, you write the command "std::cout << "text""
While it does work for resulving ambigous names, your functions probably should not be named directly after language level functions.
Ah see I've never used namespaces before, I adhere to my own naming conventions that have thus far gotten me by without want. I doubt I'll ever have the gumption to tackle C++ either, what with PHP by itself making me all warm and fuzzy inside. :D