On Sun, Jun 8, 2008 at 10:50 PM, Tim Starling <tstarling(a)wikimedia.org> wrote:
I had this argument with Yurik over constants in the
web API. He said that
constants provide validation because they'll throw a notice if you use one
that's not defined.
But:
1) They're longer, due to prefixing to avoid namespace collisions
2) They're harder to read, due to greater length, possibly cryptic
prefixes, and the inevitable uppercasing.
3) They're prone to collisions if you actually use numerical values.
4) They're impossible to use if you prefix them correctly -- that is,
as class constants rather than APCOND_ or GAID_ or similar gibberish
-- and want to use them in, say, a config option, since AutoLoader.php
isn't loaded at that point (is it?). And if it were, loading an
entire class on every page load for the sake of some constants seems a
little unnecessary. (Although, since it doesn't have to be parsed,
does it really take any time to load class/function definitions with
an opcode cache?)
If you want error-checking you can throw an error in your function if
it's passed a bogus value.
I'm not convinced, I think they're pointless,
except
when you want to make a bitfield.
Why not just use an array, then?