PHP.mk документација

Синтакса

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

language.constants.syntax.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека language.constants.syntax.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Синтакса

Референца за `language.constants.syntax.php` со подобрена типографија и навигација.

language.constants.syntax.php

Синтакса

Константите можат да се дефинираат со користење на клучниот збор const , или со користење на функцијата define(). Додека define() дозволува константа да биде дефинирана на произволен израз, клучниот збор const има ограничувања како што е опишано во следниот параграф. Откако константа е дефинирана, таа никогаш не може да се промени или да се поништи.

Кога се користи клучниот збор const , прифатени се само скаларни (bool, int, float and string) изрази и константи array кои содржат само скаларни изрази. Можно е да се дефинираат константи како resource, но тоа треба да се избегне, бидејќи може да предизвика неочекувани резултати.

Вредноста на константа се пристапува едноставно со наведување на нејзиното име. За разлика од променливите, константа е not претходена со $. Исто така е можно да се користи функцијата constant() за читање на вредноста на константа ако името на константата се добие динамички. Користете get_defined_constants() за да добиете листа на сите дефинирани константи.

Забелешка: Константите и (глобалните) променливи се во различен именски простор. Ова подразбира дека, на пример true and $TRUE се генерално различни.

Ако се користи недефинирана константа, се фрла Грешка . Пред PHP 8.0.0, недефинираните константи би се толкувале како гол збор string, т.е. (CONSTANT наспроти "CONSTANT"). Ова враќање е застарено од PHP 7.2.0, и грешка од ниво E_WARNING се издава кога ќе се случи. Пред PHP 7.2.0, грешка од ниво E_NOTICE се издава наместо тоа. Погледнете го и записот во прирачникот зошто $foo[bar] е погрешно (освен ако bar е константа). Ова не се однесува на (целосно) квалификувани константи, што секогаш ќе предизвика Грешка ако не е дефинирано.

Забелешка: За да проверите дали е поставена константа, користете го defined() function.

Ова се разликите помеѓу константите и променливите:

  • Константите немаат знак долар ($) пред нив;
  • Константите може да се дефинираат и пристапат насекаде без оглед на правилата за опсег на променливите;
  • Константите не може повторно да се дефинираат или да се поништат откако ќе се постават; и
  • Константите може да се проценат само на скаларни вредности или низи.

Пример #1 Дефинирање константи

<?php
define
("CONSTANT", "Hello world.");
echo
CONSTANT; // outputs "Hello world."
echo Constant; // Emits an Error: Undefined constant "Constant"
// Prior to PHP 8.0.0, outputs "Constant" and issues a warning.
?>

Пример #2 Дефинирање константи користејќи го const keyword

<?php
// Simple scalar value
const CONSTANT = 'Hello World';

echo
CONSTANT;

// Scalar expression
const ANOTHER_CONST = CONSTANT.'; Goodbye World';
echo
ANOTHER_CONST;

const
ANIMALS = array('dog', 'cat', 'bird');
echo
ANIMALS[1]; // outputs "cat"

// Constant arrays
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo
ANIMALS[1]; // outputs "cat"
?>

Забелешка:

За разлика од дефинирањето константи користејќи define(), константите дефинирани користејќи го const клучниот збор мора да бидат декларирани на највисокото ниво на опсег бидејќи се дефинирани во време на компајлирање. Ова значи дека не можат да бидат декларирани во функции, циклуси, if изјави или try/catch blocks.

Види Исто така

Белешки од корисници 3 белешки

souzanicolas87 на gmail точка com
пред 4 години
the documentation doesn't go too far in explaining the crucial difference between the two ways of declaring constants in PHP.

Const is handled at compile time, define() at run time. For this reason, a constant cannot be conditionally defined using Const, for example.

Another difference we can notice occurs in the constant declarations in classes. Const infiltrates the class scope, while define() leaks into the global scope.

<?php

Class Myclass (){
    const NAME = "Nicolas";
}

?>

The NAME constant is within the scope of the MyClass class.
povares на skippergroupe точка com
пред 1 година
"const is defined at compile time" may not be true, depending on what you call "defining".

Although you can't define a const inside an if, like 

    if ($c === 'a') {
        const c = a;
    }
    else {
        const c = b;
    }
    # Results in a parse error 

you can assign it a value depending on a conditionnal 'define' constant

    $a = 1;

    if ($a === 1) {
        define('a', 'one');
    }
    else {
        define('a', 'two');
    }

    const c = a;
    # Valid, c equals "one"

https://onlinephp.io/c/b8227
login на (two)view точка de
пред 8 години
Just a quick note:
From PHP7 on you can even define a multidimensional Array as Constant:

define('QUARTLIST',array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul'));

does work as expected.
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.