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 — Retourne la valeur d'une constante
Description
Retourne la valeur de la constante name .
constant() est pratique lorsque vous devez lire la valeur d'une constante, mais que vous ne connaissez son nom que durant l'exécution du script. Par exemple, ce nom peut être le résultat d'une fonction.
Cette fonction fonctionne également avec les constantes de classe.
Liste de paramètres
- name
-
Le nom de la constante.
Valeurs de retour
Retourne la valeur de la constante, ou NULL si la constante n'est pas définie.
Exemples
Exemple #1 Exemple avec constant()
<?php
define("MAXSIZE", 100);
echo MAXSIZE;
echo constant("MAXSIZE"); // identique à la ligne précédente
interface bar {
const test = 'foobar!';
}
class foo {
const test = 'foobar!';
}
$const = 'test';
var_dump(constant('bar::'. $const)); // string(7) "foobar!"
var_dump(constant('foo::'. $const)); // string(7) "foobar!"
?>
constant
Joachim Chmielewski
15-Feb-2008 07:34
15-Feb-2008 07:34
vgr at europeanexperts dot org
01-Mar-2007 09:57
01-Mar-2007 09: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
02-Feb-2007 12: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 06:13
19-Jan-2007 06: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.
04-Oct-2006 08: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 09:01
13-Jul-2006 09: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
17-May-2006 01:00
17-May-2006 01: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
19-Apr-2006 05:58
19-Apr-2006 05: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 04:39
26-Nov-2005 04: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 10: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
14-Nov-2004 01:12
14-Nov-2004 01: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 08:32
19-Sep-2003 08: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
28-Apr-2003 04:10
28-Apr-2003 04: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;
}
?>
