Привет.
Цитата |
динамически-созданное имя константы, а не её содержимое) |
Динамически создаётся значение константы, а не имя.
Я ещё не программист. Я только начал учить php, и не могу пойти дальше, так как остаётся непонятка, для чего эту константу можно применить. Вот про культурные слои, и что такое фича - вроде понятно (хотя я про это и не спрашивал), а про динамическую константу пока не понятно.
Цитата |
Сравните как на С№ |
С№ - англоязычный. Там тоже трудно что-то понять из гугловского перевода. Хотя я ещё въедливо не успел посмотреть.
_____________
Старый конь борозды не испортит
Игорь_Vasinsky
20.11.2013 - 07:28
константа на то и константа - что её значение постоянно.
а на твоём скрине - как раз имя создаётся динамически - из содержимого переменной.
не надо ля-ля
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Пардон, Вы правы. Ну так вопрос остаётся: в чём её применение.
_____________
Старый конь борозды не испортит
Цитата |
Ну так вопрос остаётся: в чём её применение. |
Могу предположить, что какой-нибудь финт с безопасностью можно сделать, типа вот делают защиту на от инклюда:
if (!defined('TEST'))exit;
Т.е. если где-то там выше в другом скрипте не создана константа TEST, то худбай.
Если применить к этому примеру т.н. вами "динамическу константу", то мало знать слово TEST - первая часть имени константы, нужно будет еще знать вторую часть имени созданную при помощи rand();, т.е. не постоянную и не прописанную статично в коде и записанную куда-нибудь в сессию например, тогда пример можно переписать:
if (!isset($_SESSION['test']) || !defined('TEST'.$_SESSION['test']))exit;
Но по мне дак...это лишнее.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Ну наконец то. Что-то в этом направлении я и предполагал. Только знаний пока не хватало чтоб утвердиться во мнении. Спасибо.
_____________
Старый конь борозды не испортит
Игорь_Vasinsky
20.11.2013 - 07:59
да, это наверно единственный вариант применения) больше ничего в голову не приходит
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
ded
Нужна чтобы у автора была дополнительная глава.
Пример из книги совершенно бесполезен и на безопасность никак не влияет.
Читать книгу которая называется самоучитель php 5/6 я бы не стал.
bestxp
20.11.2013 - 08:31
константа это изменяемое значение на протяжении работы скрипта.
как инициализирована и какое значение не важно, важно то что мы не можем его изменить задав один раз, вот и весь их смысл
Игорь_Vasinsky
20.11.2013 - 08:52
Цитата |
константа это изменяемое значение |
Цитата |
важно то что мы не можем его изменить задав один раз |
в какой строке истина?
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Цитата |
константа это изменяемое значение на протяжении работы скрипта. как инициализирована и какое значение не важно, важно то что мы не можем его изменить задав один раз, вот и весь их смысл |
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
bestxp
20.11.2013 - 09:05
Мир ваш не будет прежним?
Сейчас это не практикуется, это наследственное от
php4 когда не было нормального ООП, да и его не применяли особо, этот подход многими местами заменял глобальные переменные, точнее защищал от соблазна
изменять содержимое глобальной, так и пошло.
еще помню такие куски кода в nuke кмсках
$conf = array('HOST'=> 'localhost', 'USER' => 'USER');
foreach($conf as $name => $val){
define($name, $val);
}
да да были такие куски коды, сейчас уже на замену этого пришел Синглтон заместо глобальных всеми любимых
Игорь_Vasinsky
20.11.2013 - 09:23
ну тут о динамичности значения ни слова.
константа создалась - ей назначено значение и баста.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Invis1ble
20.11.2013 - 10:56
Цитата (bestxp @ 20.11.2013 - 06:31) |
константа это изменяемое значение на протяжении работы скрипта. как инициализирована и какое значение не важно, важно то что мы не можем его изменить задав один раз, вот и весь их смысл |
очевидно, что в первой строке опечатка и подразумевалось "неизменяемое"
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
bestxp
20.11.2013 - 11:57
ну опечатался, что же теперь убивать xD
особенно когда планшет хочет исправить за меня слова
php.net лучше рассказывает о функции
constant(): Функция constant() полезна, если вам необходимо получить значение константы, но неизвестно её имя. Например, если оно хранится в переменной или возвращается функцией.
Т.е. имя константы может быть также определено вызовом статического метода класса или еще чего-то там что не будет означать динамическое определение.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.