C++ preprocessor #define is totally different.
Is the PHP define() any different than just creating a var?
define("SETTING", 0);
$something = SETTING;
vs
$setting = 0;
$something = $setting;
C++ preprocessor #define is totally different.
Is the PHP define() any different than just creating a var?
define("SETTING", 0);
$something = SETTING;
vs
$setting = 0;
$something = $setting;
Here are the differences, from the manual
For me, the main benefit is the global scope. I certainly don't worry about their efficiency - use them whenever you need a global scalar value which should not be alterable.
Main differences:
Not sure about efficiency, but it is more than creating a var:
In general, the idea of a constant is to be constant, (Sounds funny, right? ;)) inside your program. Which means that the compiler (interpreter) will replace "FOOBAR" with FOOBAR's value throughout your entire script.
So much for the theory and the advantages - if you compile. Now PHP is pretty dynamic and in most cases you will not notice a different because the PHP script is compiled with each run. Afai-can-tell you should not see a notable difference in speed between constants and variables unless you use a byte-code cache such as APC, Zend Optimizer or eAccelerator. Then it can make sense.
All other advantages/disadvantages of constants have been already noted here and can be found in the PHP manual.
php > $cat='';$f=microtime(1);$s='cowcow45';$i=9000;while ($i--){$cat.='plip'.$s.'cow';}echo microtime(1)-$f."\n";
0.00689506530762
php > $cat='';$f=microtime(1);define('s','cowcow45');$i=9000;while ($i--){$cat.='plip'.s.'cow';}echo microtime(1)-$f."\n";
0.00941896438599
This is repeatable with similar results. It looks to me like constants are a bit slower to define and/or use than variables.
'define' operation itself is rather slow - confirmed by xdebug profiler.
Here is benchmarks from http://t3.dotgnu.info/blog/php/my-first-php-extension.html:
pure 'define'
380.785 fetches/sec
14.2647 mean msecs/first-response
constants defined with 'hidef' extension
930.783 fetches/sec
6.30279 mean msecs/first-response