downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Вълшебни константи> <Константи
[edit] Last updated: Fri, 18 Sep 2009

view this page in

Синтаксис

Можете да дефинирате константа посредством функциятаdefine() или чрез ключовата дума const извън дефиницията на клас, от PHP 5.3.0. Веднъж дефинирана, константата никога повече не може да бъде променяна или отменяна.

В константи могат да се съхраняват единствено скаларни данни (boolean, integer, float и string). По принцип е възможно да дефинирате и данни от тип resource, но това трябва да бъде избягвано, тъй като може да доведе до неочаквани резултати.

Можете да вземете стойността на константа като просто укажете името й. За разлика от променливите, пред константа не трябва да слагате $. Можете също да използвате функцията constant(), за да получите стойността на константа, в случай, че желаете да получите името на константата динамично. За списък с всички дефинирани константи, използвайте get_defined_constants().

Забележка: Константите и (глобалните) променливи са в различни пространства от имена (namespaces). Това означава, че TRUE и $TRUE обикновено са различни.

Ако използвате недефинирана константа, PHP приема, че имате предвид името на самата константа, също както ако сте я извикали като string (CONSTANT и "CONSTANT"). Когато това се случи, ще бъде изведена грешка от ниво E_NOTICE. Вижте също раздела, в който се повдига въпросът защо $foo[bar] е погрешно (освен ако преди това не сте дефинирали с define() bar като константа). Ако просто искате да проверите дали дадена константа е дефинирана, използвайте функцията defined().

Това са разликите между константи и променливи:

  • Константите нямат знак за долар ($) пред тях;
  • Константите могат да бъдат дефинирани единствено посредством функцията define(), а не чрез обикновено установяване;
  • Константите могат да бъдат достъпвани където и да е без оглед на правилата за обхват на променливите;
  • Веднъж дефинирани, константите не могат да бъдат премахвани или дефинирани повторно;
  • Константите могат да имат само скаларни стойности.

Example #1 Дефиниране на константи

<?php
define
("CONSTANT""Здравей свят.");
echo 
CONSTANT// извежда "Здравей свят."
echo Constant// извежда "Constant" и пуска съобщение (notice).
?>

Example #2 Дефиниране на константи посредством ключовата дума const

<?php
// Работи от PHP 5.3.0
const CONSTANT 'Здравей свят';

echo 
CONSTANT;
?>

Вж. също Класови константи.



Вълшебни константи> <Константи
[edit] Last updated: Fri, 18 Sep 2009
 
add a note add a note User Contributed Notes Синтаксис
0gb dot us at 0gb dot us 31-Jan-2012 05:17
While most constants are only defined in one namespace, the case-insensitive true, false, and null constants are defined in ALL namespaces. So, this is not valid:

<?php namespace false;
const
ENT_QUOTES = 'My value';
echo
ENT_QUOTES;//Outputs as expected: 'My value'

const FALSE = 'Odd, eh?';//FATAL ERROR! ?>

Fatal error: Cannot redeclare constant 'FALSE' in /Volumes/WebServer/0gb.us/test.php on line 5
timucinbahsi at gmail dot com 11-Jan-2012 10:23
Constant names shouldn't include operators. Otherwise php doesn't take them as part of the constant name and tries to evaluate them:

<?php
define
("SALARY-WORK",0.02); // set the proportion

$salary=SALARY-WORK*$work; // tries to subtract WORK times $work from SALARY
?>
uramihsayibok, gmail, com 08-Aug-2009 11:54
Don't let the comparison between const (in the global context) and define() confuse you: while define() allows expressions as the value, const does not. In that sense it behaves exactly as const (in class context) does.

<?php

// this works
/**
 * Path to the root of the application
 */
define("PATH_ROOT", dirname(__FILE__));

// this does not
/**
 * Path to configuration files
 */
const PATH_CONFIG = PATH_ROOT . "/config";

// this does
/**
 * Path to configuration files - DEPRECATED, use PATH_CONFIG
 */
const PATH_CONF = PATH_CONFIG;

?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites