To use constants in functions additional its not neccessary to change the function call wherever you need the constant in a function.
foo($var1);
to
foo($var1,$const);
More easy is to change the function definition and use a default value for a new variable that contains the const value.
function foo($var1,$my_const=CONST_VALUE){
if($my_const==1) dosomething();
}
Now it`s not necessary to change the function call wherever you need the function.
constant
(PHP 4 >= 4.0.4, PHP 5)
constant — Returns the value of a constant
설명
mixed constant
( string $name
)
Return the value of the constant indicated by name .
constant() is useful if you need to retrieve the value of a constant, but do not know its name. I.e. it is stored in a variable or returned by a function.
This function works also with class constants.
매개변수
- name
-
The constant name.
반환값
Returns the value of the constant, or NULL if the constant is not defined.
예제
Example#1 constant() example
<?php
define("MAXSIZE", 100);
echo MAXSIZE;
echo constant("MAXSIZE"); // same thing as the previous line
?>
constant
Joachim Chmielewski
15-Feb-2008 03:34
15-Feb-2008 03:34
vgr at europeanexperts dot org
01-Mar-2007 05:57
01-Mar-2007 05:57
in reply to anonymous
[quote]
To check if a constant is boolean, use this instead:
<?php
if (TRACE === true) {}
?>
Much quicker and cleaner than using defined() and constant() to check for a simple boolean.
[/quote]
is definitely nor cleaner (because it's still as wrong as using simply "if (TRACE)") nor quicker than " if (TRACE)" (one more comparison on a boolean value). This will generate PHP errors. The constant TRACE is NOT defined.
error :
PHP Notice: Use of undefined constant TRACE - assumed 'TRACE' in yourpath/test_constants.php on line 5
if you really want to be "clean" and as quick as possible, then there is a function :
[code]
function IsBooleanConstantAndTrue($constname) { // : Boolean
$res=FALSE;
if (defined($constname)) $res=(constant($constname)===TRUE);
return($res);
}
// use : if (IsBooleanConstantAndTrue('TRACE')) echo "trace is really True<br>";
[/code]
If you want, you can see a demonstration at http://www.fecj.org/extra/test_constants.php
Regards
01-Feb-2007 08:29
@XC:
That isn't necessary. If a constant is undefined, constant() returns NULL; simply suppressing the warning should be enough:
<?php
if(defined('FOO') && constant('FOO') === 'bar'){
// ...
}
?>
becomes
<?php
if(@constant('FOO') === 'bar') {
// ...
}
?>
Note that in the first snippet, the call to constant isn't unnecessary as well, and adds a bit of overhead. If you're set on using the first notation, the following is better:
<?php
if(defined('FOO') && FOO === 'bar') {
// ...
}
?>
XC
19-Jan-2007 02:13
19-Jan-2007 02:13
When you often write lines like
<?php
if(defined('FOO') && constant('FOO') === 'bar')
{
...
}
?>
to prevent errors, you can use the following function to get the value of a constant.
<?php
function getconst($const)
{
return (defined($const)) ? constant($const) : null;
}
?>
Finally you can check the value with
<?php
if(getconst('FOO') === 'bar')
{
...
}
?>
It's simply shorter.
03-Oct-2006 05:17
If the constant does not exist, constant() will generate a warning and return null.
narada dot sage at googlemail dot com
13-Jul-2006 06:01
13-Jul-2006 06:01
To access the value of a class constant use the following technique.
<?php
class a {
const b = 'c';
}
echo constant('a::b');
// output: c
?>
service at dual-creators dot de
16-May-2006 10:00
16-May-2006 10:00
It's easily to user constant() and define() to translate some words from your database-saves.
For example:
You have a table userprofil and one coloumn is "gender".
Gender can be male or female but you will display "maennlich" or "weiblich" (german words for it - whatever...)
First step: Fetch into $Gender
Second:
define("male", "maennlich");
define("female", "weiblich");
Third:
echo constant($Gender);
Now, the index of the variable $Gender will be handled like a constant!
(It works like "echo male;" for better understanding)
And a result of this, it displays maennlich btw. weiblich!
greetz
Trevor Blackbird > yurab.com
18-Apr-2006 02:58
18-Apr-2006 02:58
Technically you can define constants with names that are not valid for variables:
<?php
// $3some is not a valid variable name
// This will not work
$3some = 'invalid';
// This works
define('3some', 'valid');
echo constant('3some');
?>
Of course this is not a good practice, but PHP has got you covered.
timneill at hotmail dot com
26-Nov-2005 12:39
26-Nov-2005 12:39
Please note when using this function from within a class to retrieve a php5 class constant, ensure you include the 'self::'.
class Validate
{
const TEXT_MAX = 65536;
//-- this will work
public static function textWORKS($_value, $_type = 'TEXT')
{
$_max = constant('self::' . $_type . '_MAX');
return (strlen($_value) <= $_max ? true : false);
}
//-- this will fail
public static function textFAILS($_value, $_type = 'TEXT')
{
//-- Debug Warning: constant(): Couldn't find constant TEXT_MAX
$_max = constant($_type . '_MAX');
return (strlen($_value) <= $_max ? true : false);
}
}
11-Oct-2005 07:20
In reply to VGR_experts_exchange at edainworks dot com
To check if a constant is boolean, use this instead:
<?php
if (TRACE === true) {}
?>
Much quicker and cleaner than using defined() and constant() to check for a simple boolean.
IMO, using ($var === true) or ($var === false) instead of ($var) or (!$var) is the best way to check for booleans no matter what. Leaves no chance of ambiguity.
Joachim Kruyswijk
13-Nov-2004 09:12
13-Nov-2004 09:12
The constant name can be an empty string.
Code:
define("", "foo");
echo constant("");
Output:
foo
VGR_experts_exchange at edainworks dot com
19-Sep-2003 05:32
19-Sep-2003 05:32
Hello. This applies to constants being defined as Boolean values, and may-be applies generally.
I advise you to NOT use this in an included file, in a function or elsewhere outside the scope where the define('TRACE',TRUE) is placed) :
if (TRACE) {}
This will always evaluate to TRUE if the constant is not defined previously (the story about this becoming an string 'TRACE', thus evaluating to TRUE)
Use this :
<?php
if ((defined('TRACE'))AND(constant('TRACE'))) {}
?>
Andre
27-Apr-2003 01:10
27-Apr-2003 01:10
Maybe this is useful:
$file_ext is the file Extension of the image
<?php
if ( imagetypes() & @constant('IMG_' . strtoupper($file_ext)) )
{
$file_ext = $file_ext == 'jpg' ? 'jpeg' : $file_ext;
$create_func = 'ImageCreateFrom' . $file_ext;
}
?>
