Чем отличается define() от const?

186
04 июля 2017, 23:45

Объясните пожалуйста чем отличается строка

    const CONFIG = 'includes/db_config.php';

от строки

    define('CONFIG','includes/db_config.php');

Благодарю Вас!

Answer 1

До php5.6 const нельзя указать переменную, функцию или какое то выражение, только скалярные величины.

const FOO = 'val';       // нет ошибок
const FOO = $var;        // Parse error
const FOO = home_url();  // Parse error
const FOO = 5 + 10;      // Parse error
const FOO = 'foo'.'bar'; // Parse error
define('FOO', 'val');         // нет ошибок
define('FOO', $var );         // нет ошибок
define('FOO', home_url() );   // нет ошибок
define('FOO', 5 + 10 );       // нет ошибок
define('FOO', 'foo'.'bar' );  // нет ошибок

После 5.6 - можно.

Так же после 5.6 const может хранить массивы, define только после 7.0

В остальном:

Const должны быть объявлены в верхней области. Const всегда регистрозависима

READ ALSO
Symfony affected_rows transaction

Symfony affected_rows transaction

I have entity Users, example

249
Пробелы и табуляция

Пробелы и табуляция

Здравствуйте! Хочу защитить форму ввода от невидимых символов на стороне сервера средствами PHP(пробел, табуляция)Т

220