Hello everyone,
Currently when an undefined constant is called, E_NOTICE
is produced and
the name of the constant is assumed to be a string. In my opinion this
behaviour is strange and problematic for most developers. Maybe it would
be good if invoking undefined constants will start to produce at least
E_WARNING?
For the moment some unexpected behaviour caused by use of undefined
constant may be hard to fix with low error reporting level. Moreover,
treating an undefined constant as a string does not make sense. I know
that PHP is intended to be a flexible language, but for me it's a bit thick.
Regards,
faw
Hi Kuba,
For the moment some unexpected behaviour caused by use of undefined
constant may be hard to fix with low error reporting level.
So don't use a low error reporting level.
Moreover,
treating an undefined constant as a string does not make sense. I know
that PHP is intended to be a flexible language, but for me it's a bit
thick.
Just how is PHP supposed to know that some random string is intended to be
anything else?
- Steph
Hi Kuba,
For the moment some unexpected behaviour caused by use of undefined
constant may be hard to fix with low error reporting level.So don't use a low error reporting level.
Moreover,
treating an undefined constant as a string does not make sense. I know
that PHP is intended to be a flexible language, but for me it's a bit
thick.Just how is PHP supposed to know that some random string is intended to be
anything else?
By the quotes :).
Undefined variable $foo doesn't fall back to string 'foo' it falls back to
null. It's a sane strategy for constants as well.
I have no information how people "rely" on this, I know the reason for this
fallback is bad syntax like: echo $hi[there];
I'd fix it in 6.0 though.
Regards, Stan Vassiev
Kuba Wieczorek escribió:
Hello everyone,
Currently when an undefined constant is called,
E_NOTICE
is produced and
the name of the constant is assumed to be a string. In my opinion this
behaviour is strange and problematic for most developers. Maybe it would
be good if invoking undefined constants will start to produce at least
E_WARNING?
Use class constants
class foo {
}
echo foo::BAR;
Fatal error: Undefined class constant 'BAR' ...
that's what you are really looking for... ;)
--
"We have art in order not to die of the truth" - Friedrich Nietzsche
Cristian Rodríguez R.
Platform/OpenSUSE - Core Services
SUSE LINUX Products GmbH
Research & Development
http://www.opensuse.org/
Cristian Rodríguez wrote:
Kuba Wieczorek escribió:
Hello everyone,
Currently when an undefined constant is called,
E_NOTICE
is produced and
the name of the constant is assumed to be a string. In my opinion this
behaviour is strange and problematic for most developers. Maybe it would
be good if invoking undefined constants will start to produce at least
E_WARNING?Use class constants
class foo {
}echo foo::BAR;
Fatal error: Undefined class constant 'BAR' ...
that's what you are really looking for... ;)
namespaced constants also cause fatal error when used with qualified name.
Greg