Php константы не работают

Форум PHP программистов ► PHP практикум ► PHP для начинающих

Здесь живет

Профиль
Группа: Форумчанин

Сообщений: 490
Пользователь №: 27650
На форуме:
Карма: -1

есть две константы, определеные как

мне нужно подставить значения этих констант в функцию, например

[ php ]function myfunc($z, $s)
<
$str = ZAZA;
$str .= SASA;
return $str;
>

в итоге я должен получить = ‘ddddddddddaaaaaaaaa’, а получаю ‘zazasasa’, то есть константы не читаются.

пробовал так, например, constant(‘zaza’)- результат тот же php не видит константы.

в чем моя ошибка?

спасибо за любую помощь

вы все верно пишите, так и делал — верхний регистр и без кавычек, все равно не видит просто читает их как есть и все. в чем может быть проблема? спасибо.

P.S. азы мне понятны, можете дать профессиональный совет хоть в какой области это смотреть?

доброе утро, спасибо за подсказки, но это не решение проблемы.

ошибка в том, что константа не определена, хотя в define все прописано правильно.
php не видит константу и интерпретирует ее как имя.

приводить функцию нет смысла, так это просто пример, константа это языковая константа в файлах en. php и ru. php , например

загружаются они в шапке index. php (include(«translation/$lan»), где $lan — переменная коммутирующая переключение языка выбора файля языкового), а читаться должны в файле обработки кода test. php (код работает нормально, только константу не видно в этом файле). сам код test. php принципиального значения не имеет, если в нем поставить такое условие:

то все работает отлично и константа определена, но это не решает проблему так как определяет константу к одному языку и при переключении, например к англ. языку, значение останется тоже.

при таком подключении языковых файлов :

константы во всем проекте и во свсех файлах неопределены, а так или так : определены везде, кроме test. php , о котором я писал.

может кто-то подскажет путь решения проблемы, может как-то нужно определить константу по другому, через класс или еще как? если можно небольшой пример.

спасибо за помощь.

это же просто описка. все исправил уже в посте предыдущем. может кто-то серьезно поможет с решением проблемы?

skolozhabskiy
я 2 раза перечитал, так и не понял, что ты там замудрил, возможно просто сонный, но кто из какого куда и зачем открывается.
Если определил её до её использования — значит она уже определена, сегодня был похожий баг, оказалось в имени допустил грамматическую ошибку, советую и тебе проверить на имя, раз ты везде допускаешь ошибки.
Хотя на 90% уверен, что ты сначала пытаешься вывести, а уже потом определить, а должно быть наоборот. test идёт раньше подключения языка.

А по теме, давай код — дадим ошибку, а не мелкие выдержки. ПХП сам по себе работает правильно, проблема всегда в кривизне рук, а не видя эту кривизну с твоей стороны невозможно тебе помочь.

Цитата
function myfunc($z, $s)
<
$str = ZAZA;
$str .= SASA;

echo myfunc(‘.ZAZA.’,’.SASA.’);

во первых — ты используешь аргументы $z, $s — поэтому подставляя — в ковычках

если у тя константы предопределены, зачем пытаться сменить их через аргументы?

у тя распознаются как значение аргументов, поэтому и белиберда, наверное

если я не ошибаюсь (просто не использовал константы в функциях) у констант глобальная зона видимости, поэтому:

Цитата
речь не о орфографической грамотности, а о конкретном вопросе с константами. еще раз всем спасибо

откуда мы знаем что это ты специально код корявишь?

ПОказал бы свой реальный код, в нём и будем разбираться

Подписаться на тему
Уведомление на e-mail об ответах в тему, во время Вашего отсутствия на форуме.

Подписка на этот форум
Уведомление на e-mail о новых темах на форуме, во время Вашего отсутствия на форуме.

Скачать/Распечатать тему
Скачивание темы в различных форматах или просмотр версии для печати этой темы.

Источник

Константы в PHP — const и define()

В этой заметке разберемся, в чем разница в объявлении PHP констант с помощью ключевого слова const и функции define() .

Константы в PHP — это «постоянные», значения которых указывается всего один раз и затем не может быть изменено. При попытке изменить значение, оно не изменится и появится PHP заметка: «Constant already defined» (константа уже определена):

Объявлять константы в PHP можно двумя способами:

У каждого способа есть свои особенности, чтобы их понять, давайте рассмотрим все поэтапно, как и что менялось с каждой версией PHP.

Как создавать константы

PHP меньше 5.3

До 5.3 в PHP, константы можно было определять только через define() . Ключевое слово const появилось с версии 5.3.

Константы могут хранить только скаляры. Скалярные переменные — это переменные с типами integer , float , string и boolean . Типы array , object и resource не являются скалярными.

С версии PHP 5.3

Появилось ключевое слово const и теперь константу можно определять еще и с помощью него.

Однако, в const нельзя указать переменную, функцию или какое то выражение, а нужно передавать скаляр «напрямую»:

Тогда как для define() таких ограничений нет.

PHP 5.6

Стало возможным указывать в значения const примитивные PHP выражения (выражения из скаляров):

Стало возможным хранить массивы в константах:

Разница между define() и const

#1 const должны быть объявлены в верхней области

Потому что они определяются при компилировании скрипта. Это значит, что const нельзя использовать внутри функций/циклов/выражений if или try/catch блоков.

#2 const всегда регистрозависима

В то время как define() позволяет создать регистро-независимые константы:

#3 const понимает только скаляры

const нельзя передать переменные, функции, выражения, а define() можно:

С версии PHP 5.6 в const также можно указывать примитивные выражения, а не только скаляры.

#4 const может хранить массивы с версии PHP 5.6, а define с PHP 7.0

Итоги сравнения

Определять константу почти всегда лучше с помощью define() , потому что тут больше возможностей и меньше вариантов «поймать» ошибку. Исключение — это когда у вас версия PHP 5.6 и вам нужно сохранить массив в константу, тут поможет const .

Константы PHP класса

Объявляются только с помощью const . Правила для них такие как описано выше: принимают только скаляры, не понимают PHP переменные, функции, выражения.

Объявленная константа принадлежит именно классу, она не принадлежит ни одному объекту и является общей на всех объектов (экземпляров) класса.

Постоянные класса всегда общедоступны — нет статуса private или protected . Однако с версии PHP 7.1 константам класса можно указать модификатор:

Константы для классов чем-то похожи на статические (static) свойства класса. Не углубляясь в подробности, разница в том, что константу нельзя изменить.

«Волшебные» константы

И в заключении вспомним про особые константы PHP.

В PHP есть девять волшебных констант, которые меняют свое значение в зависимости от контекста, в котором они используются. Например, значение __LINE__ зависит от строки в скрипте, на которой эта константа указана. Все «волшебные» константы разрешаются во время компиляции, в отличии от обычных констант, которые разрешаются во время исполнения. Специальные константы нечувствительны к регистру и их список приведен ниже:

Источник

Php константы не работают

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

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

Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо

После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..

Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.

Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.

На последок как оно происходит на форумах

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.

Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

Источник

oop — предопределенные константы PHP не работают

Я следую учебному пособию по созданию файла экземпляра с необходимыми файлами. Это дерево проекта:

а это мой instantiate.php :

В login.php Я требую инициализировать файл как:

Но, следуя руководству, я мог бы использовать LIB_PATH в таких файлах, как database.php что требует config.php и на user.php требующий database.php ,

На данный момент им требуется файл без пути, поскольку они находятся в одном и том же включаемом файле. Однако, если я правильно понял, как работает разделитель каталогов, корень сайта и lib_path, то это улучшит то, что не нужно добавлять разные пути везде, просто добавьте путь через константы. Ну, это не работает! Это отображает это: (сверху вы видите эхо dirname(__FILE__) в index.php в общей папке.

Я проверил phpinfo чтобы увидеть корневой путь … и все кажется в порядке, но не работает, если я пытаюсь использовать это LIB_PATH.DS ,

Последнее, что я прочитал об этом, это некоторые ограничения на ibay, но я попытался провести больше исследований, и я даже не могу найти, что это за «ibay».

Кто-нибудь знает, почему это происходит? Спасибо!

Решение

Вы получаете уведомление, потому что у вас есть ошибка в пути для включения вашего файла: вы не получаете initialize.php файл загружен по сценарию. Если вы действительно хотите, чтобы этот файл был загружен (и вы действительно хотите его, так как ваш код не может обойтись без него), вы должны использовать require вместо include , Таким образом, если файл отсутствует, вы получите сообщение об ошибке, и ваш код остановится (смотрите, что остановка — это то, что вам действительно нужно, как если бы у вас не было путей, ваша программа с треском провалилась).

Еще больше, вы должны использовать require_once , поэтому вы не перегружаете создаваемое приложение: если файл был загружен один раз, он не будет загружен снова.

Вы можете проверить, загружен ли файл, следуя совету этого вопроса: Проверьте, был ли файл включен или загружен

Источник

Читайте также:  Windows 10 не работает поиск по дате
Оцените статью