DEFINE vs Variable in PHP

Php

Php Problem Overview


Can someone explain the difference between using

define('SOMETHING', true);

and

$SOMETHING = true;

And maybe the benefits between one or the other?

I use variables everywhere and even in a config type file that is included to everypage I still use variables as I don't see why to use the define method.

Php Solutions


Solution 1 - Php

DEFINE makes a constant, and constants are global and can be used anywhere. They also cannot be redefined, which variables can be.

I normally use DEFINE for Configs because no one can mess with it after the fact, and I can check it anywhere without global-ling, making for easier checks.

Solution 2 - Php

Once defined, a 'constant' cannot be changed at runtime, whereas an ordinary variable assignment can.

Constants are better for things like configuration directives which should not be changed during execution. Furthermore, code is easier to read (and maintain & handover) if values which are meant to be constant are explicitly made so.

Solution 3 - Php

There is also a difference in scope.

In the example given by the orignal poster, $SOMETHING will not be accessible within a function whereas define('SOMETHING', true) will be.

Solution 4 - Php

define() makes a read-only variable, compared to a standard variable that supports read and write operations.

Solution 5 - Php

A constant is very useful when you want access data from inside a function, check this

<?php
function data(){
  define("app","hey you can see me from outside the function",false);
  $tech = "xampp";
}
data();
echo $tech;
echo app;
?>

If you use a variable you are never going to get the inside value here is what i get

Notice: Undefined variable: tech in D:\xampp\htdocs\data\index.php on line 8 hey you can see me from outside the function

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJasonDavisView Question on Stackoverflow
Solution 1 - PhpTyler CarterView Answer on Stackoverflow
Solution 2 - Phpkarim79View Answer on Stackoverflow
Solution 3 - PhpRandy GreencornView Answer on Stackoverflow
Solution 4 - Phpuser128026View Answer on Stackoverflow
Solution 5 - PhpGeoffrey Eng AtkinsonView Answer on Stackoverflow