php constant expression contains invalid operations

PHP Error : Fatal error: Constant expression contains invalid operations

I am getting an error:

Fatal error: Constant expression contains invalid operations in config.php on line 214

Whether I did any mistakes in quotes? Or somewhere else?

My search for the error message only showed a different source cause (a dynamic default value in a function definition).

From the official Php documentation :

Like any other PHP static variable, static properties may only be initialized using a literal or constant before PHP 5.6; expressions are not allowed. In PHP 5.6 and later, the same rules apply as const expressions: some limited expressions are possible, provided they can be evaluated at compile time.

This is because all static declarations are resolved in compile-time, when the content of other variables is not known (see this other page of official doc).

Raja this is because a static variable contains a constant value in it. But in your case:

$appdata[‘id’] is dynamic that can change its value during the execution. That’s why the error is showing.

Unless you mess with reflection, the only way I can think of to have a static private/protected class property with a dynamically generated value is to calculate it outside the class:

In your precise use case, however, it’s possible that there’s simply no good reason for the property to be static. In that case, it’s as straightforward as using the constructor:

I had this error and my fix was to not declare a date within a class property array

Источник

Ошибка PHP: Неустранимая ошибка: выражение константы содержит недопустимые операции

Я получаю сообщение об ошибке:

Неустранимая ошибка: выражение константы содержит недопустимые операции в config.php в строке 214

Были ли ошибки в кавычках? Или где-то еще?

Мой поиск сообщения об ошибке показал только другую причину источника (динамическое значение по умолчанию в определении функции).

ОТВЕТЫ

Ответ 1

Как и любая другая статическая переменная PHP, статические свойства могут быть инициализированы только с использованием литерала или константы перед PHP 5.6; выражения не допускаются. В PHP 5.6 и более поздних версиях те же правила применяются как выражения const: возможны некоторые ограниченные выражения, если они могут быть оценены во время компиляции.

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

Ответ 2

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

$appdata [‘id’] является динамическим, который может изменять его значение во время выполнения. Вот почему отображается ошибка.

Ответ 3

У меня была эта ошибка, и мое исправление заключалось в том, чтобы не объявлять дату в массиве свойств класса

Ответ 4

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

Источник

Почему один и тот же PHP код вызывает синтаксическую ошибку?

Пишу вот такой кусочек кода:

Он работает, и выводит рандомные имена файлов.

Оформляю его же в виде класса:

Почему так? Как исправить?

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

С помощью var можно инициализировать только константные значения.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Так здесь инициализируется константа.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Выражение одно и то же.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Нет, значение будет разное в зависимости от рандома

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Но оно же вычисляется до того, как будет инициализирована константа. Вычисляется выражение, и полученным значением инициализируется константа. В чем проблема?

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

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

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Как же его можно вычислить, если результат функции неизвестен на этапе компиляции?

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

С каких пор PHP стал компилируемым языком?

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Наличие интерпретатора не означает отсутствие этапа компиляции.

Негоже быть таким безграмотным.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Вот это дельное замечание.

Конструктор бы трогать не хотелось.

Может быть, можно вычислить значение до определения класса и воспользоваться им в инициализации переменной? Что-то не получается у меня это сделать.

только хз работает или нет

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Чем товй код отличается от моего?

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

У вас минимум 4 синтаксические ошибки. Как и у ТС.

не очень понятно чего он хочет в итоге добиться.

не многим, там тоже не правильно. Но примерно должно быть так,наверное.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Для начала http://php.net/manual/en/language.oop5.properties.php Там написано чем и почему нельзя инициализировать свойства класса. Да и про синтаксис почитать будет не лишним.

Без конструктора можно, но тогда будет совсем непонятно нафига тут класс. Например:

Или можно побороть первобытный страх перед конструкторами и написать так:

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

С каких пор PHP стал компилируемым языком?

Боюсь ошибиться, но вроде бы с 4 версии, когда появился Zend Engine.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Я похож на твою маму, которая бегает тебе готовить чай когда ты противным голоском этого требуешь? Ты явно меня с кем-то перепутал.

нет, благо моя мама не такая бесполезная как ты. =)

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Комменты не читал но сразу скажу. Нельзя выполнять любые операции помимо присваивания вне конструктора или методов.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

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

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Просто вынеси из своего выражения rand(0,3) во внешнюю констану (хоть через тот же define

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

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

То есть мой ответ выше был тебе.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Правильный ответ дан в первом же посте, что ты собрался писать и зачем?

Хотела и написала, так же как и ты по неведомой причине решил оскорбить меня.

Может быть причина в том, что это не он, а она? Ну хочется ей быть полезной, да не умеет она, что поделаешь.

Так здесь инициализируется константа.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Это тоже не сработает. Если выносить во внешнюю константу, то всё выражение array(‘caveman.gdf’, ‘automatic.gdf’, ‘bubblebath.gdf’, ‘crass.gdf’)[rand(0,3)])

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Конструктор бы трогать не хотелось.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Дельный совет уже дали. Выносить все это во внешние константы – бред какой-то. Делай все внутри конструктора, да и если ты захочешь использовать этот список шрифтов в другом месте или изменить – один фиг будешь доставать его из внешних конфиг приложения. Так что забей.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

PHP Parse error: syntax error, unexpected ‘(‘ in sample_02.php on line 5

А почему это говно выплюнуло такую неочевидную ошибку? Выплюнуло бы что-то вроде: «non-static data member initializers isn’t available».

Надо же, чтобы они генерировались для каждого инстанса класса!

Нет, я вижу где конфигурируемый список и думаю, что как и для любого конфигуриремого списка ему место в конфиге приложения. Но я не байтодрочер, и понимаю, что здесь тег ООП и это PHP, а не С. И поэтому, думаю что даже мерзкие конфиги, а-ля

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Потому что автор интерпретатора хотя бы знает английский, в отличие от дурака из России, который не способен ни в пых, ни в английский. English motherfucker! Do you speak it?

Потому что так универсальнее. Еще какие-то кучи типов ошибок придумывать, тьфу.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Ты поехавший. У тебя СПГС. Был вопрос конкретный. Без всяких потребнойстей к какой-либо архитектуре. Предложенное тобою решение генерировало бы случайный элемент из списка для каждого инстанса класса, в то время как исходя из исходного описания, этот случайный элемент списка должен быть одним для всех инстансов.

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

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Потому что у него версия php ниже седьмой. В седьмой все нормально описывается

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Да, лан, даже perl иногда получше сообщает, где косяк:

А в остальном согласен.

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

О каких «каждых инстансах» ты говоришь? Если для тебя не очевидно, что для конфигурации приложения потребуется один единственный инстанс, то мне страшно представить какой из тебя программист.
А устанавливать константу RAND(0,3) только ради того, чтобы получить псевдорендомное значение из массива – это просто верх мысли, ага.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Ты какой-то агрессивный и унылый. Это всё из-за PHP, наверное. Программирование должно доставлять радость и лулзы.

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Тебя когда спрашивают как инициализировать переменную, ты начинаешь рассказывать о масштабируемости и хай-лоаде? Ты здоров? Ты читать умеешь? В оп-посте где-то был вопрос о том, что это конфиг? Илио том, как ему хранить конфиг? Там вообще про конфиг и архитектурные решения какие-либо вопросы задавались?

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

php constant expression contains invalid operations. Смотреть фото php constant expression contains invalid operations. Смотреть картинку php constant expression contains invalid operations. Картинка про php constant expression contains invalid operations. Фото php constant expression contains invalid operations

Ваш helloworld.lang плохо поддается поддержке, надо срочно все переписать на %LanguageName% на основе %FrameworkName% с применением %TechnologyName%

В оп-посте где-то был вопрос о том, что это конфиг?

$fontFile = ‘fonts/’.array(‘caveman.gdf’, ‘automatic.gdf’, ‘bubblebath.gdf’, ‘crass.gdf’)[rand(0,3)];

Т.е. ты считаешь, что (независимо от «задумки» разраба) в будущем конфигурировать этот список не понадобится? Ок.

Источник

Свойство, как объект

получаем Fatal error: Constant expression contains invalid operations

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Ссылка на объект как свойство класса
Добрый вечер. Есть 2 класса: сотрудники и компании. Если использовать БД то вопрос бы решался.

Объект как свойство или как оно делается
Схема примерно такова class Upper < >class Lower

У вас в кучу все, конструктор класса без класса, публичные переменные выдаваемые за класс, и попытка обратится к текстовой переменной как к объекту. Что вы хотите получить на выходе?

там нет пояснения на пост 1

Jodah, мне через конструктор тогда его объявить объектом, чтобы при отправке в вид ВЕЗДЕ не дописывать (object)?

Добавлено через 1 минуту

Решение

Добавлено через 10 минут
Вы кстати насчет this не правы, видимо в одном только php и пишите. При использовании ООП это не рекомендуется- вы либо используете процедурный подход и ООП не трогаете,либо клепаете класс :

По вашему варианту так работает:

Как то странно получается, вы не знаете что такое self, но уже решаете кто прав, а кто нет.

Модификатор static напрямую связан с классом, если поле статично, значит оно принадлежит классу, если метод статичный, аналогично — он принадлежит классу.
Предположим, существует статический метод increment() в классе Counter, задачей которого является инкрементирование счётчика count. Для вызова данного метода можно использовать обращение вида Counter->increment(). Нет необходимости создавать экземпляр класса Counter для доступа к статическому полю или методу.

Это фундаментальное отличие между статическими и НЕ статическими объектами (членами класса).

А теперь по поводу this.

Так вот. this в ЭКЗЕМПЛЯРЕ указывает НА ЭТОТ САМЫЙ экземпляр (к примеру в конструкторе класса). Это указатель-ссылка на текущий объект— «ПРИМЕНЯТЬ ЗДЕСЬ».

Источник

PHP Error : Fatal error: Constant expression contains invalid operations

Posted by: admin February 12, 2018 Leave a comment

I am getting an error:

Fatal error: Constant expression contains invalid operations in
config.php on line 214

Whether I did any mistakes in quotes? Or somewhere else?

My search for the error message only showed a different source cause (a dynamic default value in a function definition).

Like any other PHP static variable, static properties may only be initialized using a literal or constant before PHP 5.6; expressions are not allowed. In PHP 5.6 and later, the same rules apply as const expressions: some limited expressions are possible, provided they can be evaluated at compile time.

This is because static declarations are resolved in compile-time, when the content of other variables is not know (see this other page of official doc).

I had this error and my fix was to not declare a date within a class property array

Raja this is because a static variable contains a constant value in it. But in your case:

$appdata[‘id’] is dynamic that can change its value during the execution. That’s why the error is showing.

Unless you mess with reflection, the only way I can think of to have a static private/protected class property with a dynamically generated value is to calculate it outside the class:

In your precise use case, however, it’s possible that there’s simply no good reason for the property to be static. In that case, it’s as straightforward as using the constructor:

Related Posts

CMS advice – PHP

Q(Question): Apologies for x-posting but seemed no obvious single forum for my query. I am new to content management systems and am considering using a cms to implement a content-based web site with a.

Sending mail with php – PHP

Q(Question): php mail… I did this ages before but I’m having problems with it.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *