Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
Как константе присвоить значение переменной или функции: Код: php 1. 2. 3. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2013, 18:41 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2013, 19:59 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
через рефлекшн разве что http://www.php.net/manual/en/book.reflection.php ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2013, 23:21 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
авторПочитай здесь для чего вообще нужны константы и какие они могут принимать значения. Принимать могут любые скалярные значение. И изменять своё значение в процессе выполнения программы не могут. Но из этого не следует, что то значение, которым они должны быть проинициализированы, не может вычисляться в момент объявления оной константы. Этот запрет не является следствием или требованием существа константы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2013, 11:59 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
ScareCrowчерез рефлекшн разве что http://www.php.net/manual/en/book.reflection.php Ниасилил. Пример бы не помешал. Объявляю вспомогательную функцию sfnc, которая возвращает значение целевой переменной или целевой функции, и далее выполняю: Код: php 1. 2. 3. Так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2013, 12:35 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
авторНо из этого не следует, что то значение, которым они должны быть проинициализированы, не может вычисляться в момент объявления оной констант https://wiki.php.net/rfc/const_scalar_exprs ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2013, 14:18 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
ScareCrow , покажите пример присваивания константе класса значения некоторой переменной или функции. Возможно, с использованием Reflection-классов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2013, 16:00 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
Так никто и не подскажет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2013, 12:36 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
$const_value = func(); eval "abstract class semt { const prt = $const_value;}" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2013, 14:45 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
ScareCrow$const_value = func(); eval "abstract class semt { const prt = $const_value;}" Неа. Хитрить не нужно. В данном примере в момент интерпретации класса константе присваивается константное значение. А необходимо, чтобы значение вычислялось и присваивалось константе в момент интерпретации. И без всяких eval'ов. Объявлять классы через eval - это некошерно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2013, 13:00 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
Cyrax_02Объявлять классы через eval - это некошерно. а менять константы, кошерно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 14:43 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
Cyrax_02Как константе присвоить значение переменной или функции: Код: php 1. 2. 3. ? Итак, надеюсь понимаете почему константа? потому что её нельзя менять. Другое дело, что Вы можете присвоить ей любое скалярное значение (но только один раз, второе присвоение ошибки не выдаст, но и результат изменён не будет). Для этого можно использовать конструкцию define($name, $value). Ну например вот так можно делать: Код: php 1. 2. 3. Вот только, не знаю документированная ли эта особенность присвоения констант (лень документацию листать, а явно этот момент нигде не указывается вроде). Но в любом случае это работает. P.S. Странно, что этого ещё никто не написал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 14:57 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
ой )) Кажется я не по теме немного ответил :) Тут речь идёт об константах класса. Сейчас экспериментирую. Помню что-то подобное видел. Я так понимаю принципиальности в том, что бы это была константа нету? Главное ведь - это защитить переменную от записи (то есть сделать её read-only)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 15:28 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
Ну вот, самый простой способ - это объявить переменную как private и переопределить метод __get: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. и всё, проблема решена, наш объект обладает read-only атрибутом b. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 15:37 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
автора менять константы, кошерно ? Именно поэтому пример ScareCrow и не подходит. Константу менять нельзя и не нужно. Нужно в момент объявления класса присвоить константе значение, вычисляемое в момент интерпретации объявления класса. Ведь вычислять значение константа не запрещает ? Или вычислять тоже нельзя ? авторНу вот, самый простой способ - это объявить переменную как private и переопределить метод __get: Нет, должна быть именно константа: Код: php 1. 2. 3. ШИРМА - это чёрный ящик. Т.е. некоторое выражение на языке php, которое возвращает значение, зависящее от значения пременной $p. Т.е. нужно сделать так: Код: php 1. или так: Код: php 1. Но сделать это в такой форме, чтобы интерпретатор php эту конструкцию проглотил и не подавился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 18:45 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
авторвычисляемое в момент интерпретации объявления класса в compile time на текуший момент вычислять ничего нельзя. точка. в 5.6 можно будет вычислять скаляры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 18:46 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
Cyrax_02, совсем не понял что надо :) Опишите не попытку решения задачи, а саму задачу, пожалуйста. Для чего Вам надо то, что Вы стараетесь сделать? По Вашим словам, могу предположить, что Вы хотите спрятать функцию за константой (ну то есть, обращаясь к константе, программист получает не её статическое значение, а то, что вернёт некая функция)? Правильно я понял? или что-то иное требуется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 19:01 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
авторПо Вашим словам, могу предположить, что Вы хотите спрятать функцию за константой (ну то есть, обращаясь к константе, программист получает не её статическое значение, а то, что вернёт некая функция)?Я ведь уже несколько раз описал задачу: Нужно в момент объявления класса присвоить константе класса значение, которое должно быть вычислено в момент компиляции объявления класса . Далее уже, при выполнении php-кода я использую значение этой константы (ИмяКласса::ИмяКонстанты) и никогда более не меняю . Т.е. при объявлении класса в значение константы класса должно вычисляться. И должно вычисляться только при объявлении класса. Т.е. нужно сделать так: Код: php 1. 2. 3. 4. 5. или так: Код: php 1. 2. 3. 4. 5. Но сделать это в такой форме, чтобы интерпретатор php эту конструкцию проглотил и не подавился. ---------------------------------------------------------------------------- Похоже, дело обстоит так, как сказал ScareCrow : авторв compile time на текущий момент вычислять ничего нельзя. точка. в 5.6 можно будет вычислять скаляры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 12:23 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
авторНо сделать это в такой форме, чтобы интерпретатор php эту конструкцию проглотил и не подавился. eval ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 12:50 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
Cyrax_02, А чем на практике вызвана необходимость использовать константу? Ведь от переменной она отличается лишь тем, что никогда не меняется. Решение для создание read-only переменной я уже написал. eval вам не подходит (ну, я тоже не поклонник, однако это всё же вариант решения)... read-only переменная не подходит... поясните пожалуйста, какую же задачу Вы решаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 14:27 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
Cyrax_02 Т.е. при объявлении класса в значение константы класса должно вычисляться. И должно вычисляться только при объявлении класса. Извините, но это не константа. Это переменная которая зависит в общем случае от времени объявления класса. Использовать константу, это как "мышки, а вы станьте птичками" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2013, 14:10 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
Сергей Арбузов, Вот, наконец-то здравомыслящий человек появился. На хера топикстартеру была нужна именно константа остается загадкой... Видимо, архитектура требует, че уж поделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2013, 03:02 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
MikkiMouse, не ну можно перед описанием класса сделать функцию которая вычисляет значение, потом запихивает это значение в глобальную константу через define, а внутри класса присвоить константе класса значение глобальной константы.... .... о крокодильчики полетели..... но зачем это делать?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2013, 17:56 |
|
||
|
(php) Как константе присвоить значение переменной или функции
|
|||
|---|---|---|---|
|
#18+
Сергей АрбузовMikkiMouse, запихивает это значение в глобальную константу через define, а внутри класса присвоить константе класса значение глобальной константы.... Отличное решение, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 17:05 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38515235&tid=1461584]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 433ms |

| 0 / 0 |
