#39466 [Bgs]: Expaned Class constants to accept return of function value
| From: | kevin at metalaxe dot com | Date: | Fri, 10 Nov 2006 22:54:28 +0000 |
| Subject: | #39466 [Bgs]: Expaned Class constants to accept return of function value | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-104784@lists.php.net to get a copy of this message | ||
ID: 39466
User updated by: kevin at metalaxe dot com
Reported By: kevin at metalaxe dot com
Status: Bogus
Bug Type: Feature/Change Request
Operating System: *
-PHP Version: 5.2.0
+PHP Version: 5.2.0+
New Comment:
I don't understand why I'm being shrugged off as impossible. I'm asking
for functionality similar to global constants for class constants. If
you can do it for global constants, it seems only plausible that class
constants should be handled in a similar fashion.
I could find many more uses for the exact same functionality if
necessary, within the same applicable class even.
Previous Comments:
------------------------------------------------------------------------
[2006-11-10 22:40:38] tony2001@php.net
define() is just a function. which declares constants.
I was talking about class constants et al.
------------------------------------------------------------------------
[2006-11-10 22:37:11] kevin at metalaxe dot com
Just for reference, I reread the docs for global constants set using
define(). http://us2.php.net/manual/en/function.define.php
states:
Defines a named constant at runtime. See the section on constants for
more details.
------------------------------------------------------------------------
[2006-11-10 22:33:06] kevin at metalaxe dot com
Ok, if that is the case, how does the global constant MAGIC_QUOTES get
defined from the code in the description?
<?php
define( 'MAGIC_QUOTES', ( (bool)get_magic_quotes_gpc() ), true );
var_dump( MAGIC_QUOTES );
?>
prints bool(true)
We are running 3 functions there (according to the docs). One to get
the value being applied, another to cast to int and finally one to
"define" the constant.
------------------------------------------------------------------------
[2006-11-10 22:26:50] tony2001@php.net
That's not possible, as constants are declared at compile time, while
functions are executed at runtime.
------------------------------------------------------------------------
[2006-11-10 22:11:17] kevin at metalaxe dot com
Description:
------------
You can define a global constant based on the return of a function yet
you cannot do so for class constants.
eg. define( 'MAGIC_QUOTES', ( (bool)get_magic_quotes_gpc() ), true );
Requesting a method to assign class constants in a manner similar to
global constants
Reproduce code:
---------------
<?php
class parser
{
const magic_quotes = (bool)get_magic_quotes_gpc();
public my_stripslashes( $str )
{
if( self::magic_quotes === true )
{
$str = stripslashes( $str );
}
return $str;
}
}
?>
Expected result:
----------------
Constant "magic_quotes" to be assigned the boolean value of
get_magic_quotes_gpc's return.
Actual result:
--------------
With boolean cast:
Parse error: syntax error, unexpected T_BOOL_CAST in parser.php on line
4
Without boolean cast:
Parse error: syntax error, unexpected '(', expecting ',' or ';' in
parser.php on line 4
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=39466&edit=1