2012-06-29 1 views
3

В чем же заключается цель использования констант (в PHP)? Я понимаю, как они работают, но в каких условиях они предпочтительнее, скажем, глобальной переменной? Во всяком случае, не будут ли переменные более гибкими, потому что они могут быть помещены внутри строк?PHP - Цель постоянных?

Я искал в Интернете, но все, что я нашел, это определения - не настоящая причина для использования того или другого. Может ли кто-нибудь помочь мне понять преимущества использования одного над другим?

+2

Используйте константу, когда вы не хотите, чтобы значение менялось при любых обстоятельствах. –

+0

Я голосую, чтобы нажать это на Programmers.SE, где вы, вероятно, получите более подробные ответы. –

ответ

2

Константа надежен. Это не изменится. Скажем, например, вы пишете библиотеку классов, которую могут использовать другие. Предположим, вы хотите использовать Pi до 5 знаков после запятой, и по какой-либо причине вы не хотите превращать ее в приватную переменную с геттером.

Так вы

Class Foo { 

     public $pi = 3.14159; 
    } 

Теперь какой-то парень, который использует ваш класс случайно делает

$foo->pi = 4; 

Ну что будет ввернуть все вверх. Поэтому вместо того, вы

const $pi = 3.14159; 

Теперь вы знаете, что это не изменится и не будет винт материал. Кроме того, разработчики будут знать, что вы определили ее по определенной причине.

+0

Значит, это просто способ заставить разработчиков нарушить собственный код? Имеет смысл. :) Благодаря! – Nathanael

+2

Ну да и нет ... Определяется другой тип константы. Они хороши для настроек уровня приложения. Можно использовать его для каталога. define ('DIR_CLASSES', '/ classes'); Таким образом, кто-то не может изменить его во время выполнения, поскольку даже не имеет смысла изменять его во время выполнения, но в будущем вы перемещаете каталог классов в/subdir/classes, вам нужно только изменить одну строку кода вместо обновления многих. – Kris

+0

Я мог бы добавить это из руководства php: «Константы отличаются от обычных переменных тем, что вы не используете символ $, чтобы объявлять или использовать их». поэтому он должен быть const pi = 3.14159. – billmalarky

3

В каких обстоятельствах они предпочтительнее, скажем, глобальной переменной?

Константы не меняются. Неизменное глобальное государство было бы предпочтительнее его изменчивого коллеги; Таким образом, ваше состояние определяется в одном месте и никогда не изменяется в ходе вашего скрипта. Запрет использования runkit Ваш код не сможет изменить состояние в некотором роде, которого вы не ожидали.

Кроме того, глобальные переменные должны быть объявлены внутри функций с помощью ключевого слова global, хотя технически, что заявление, хотя и более независимым от типа работы лучше, чем предполагалось, глобальная я полагаю :)

+1

[Обычно] (http://php.net/manual/en/function.runkit-constant-redefine.php). –

+0

@TimCooper OMG! = O –

+0

Переопределить константу. Хм. Я не верю, что когда-либо сталкивался с чем-то менее полезным. – Herbert

Смежные вопросы