PHP Error : Fatal error: Constant expression contains invalid operations
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.
So you cannot initialize a static variable with another variable. Replace $appdata['id']
with a constant string or remove the static
attribute.
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).
Constant expression contains invalid operations
As described here
Class member variables are called "properties". You may also see them referred to using other terms such as "attributes" or "fields", but for the purposes of this reference we will use "properties". They are defined by using one of the keywords public, protected, or private, followed by a normal variable declaration. This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.
The only way you can make this work is :-
<?php
namespace App;
class Amazon
{
protected $serviceURL;
public function __construct()
{
$this->serviceURL = config('api.amazon.service_url');
}
}
Fatal error: Constant expression contains invalid operations in /PATH/initClass.php on line 5
Your problem is that you are using a function operation to set a value to a class variable. To fix your problem, use the following code (i.e. move initialization to the constructor)
<?php
Class init
{
public const THEME = "aman/dev/frontend/";
private $root;
public function __construct() {
$this->root = dirname(__dir__)."/aman/dev/fontend/";
}
public function getFile($name,$value)
{
list(
$title
) = $value;
}
}
?>
PHP Fatal error: Constant expression contains invalid operations
Do This Instead
<?php
class InfoClass {
private $user_agent;
public function __construct(){
$this->user_agent = $_SERVER['HTTP_USER_AGENT']; // error is on this line
}
public static function getOS() {
global $user_agent;
$os_platform = "Unknown OS Platform";
...
}
Hope it Helps
PHP Fatal error: Constant expression contains invalid operations, when initializing a static inline?
Based on php documentation; You cannot initialize static variable with another non constant expression or variable.
Which means if you want to assign a value to static variable this value should be a an integer, string etc.
What you did here is against static word rule in PHP you are assigning a dynamic value to $timezones variable
static $timezones = DateTimeZone::listIdentifiers(); // Error here
Check for detailed information.
http://php.net/manual/en/language.variables.scope.php#language.variables.scope.static
Related Topics
Laravel 5 Class 'Form' Not Found
Phpexcel Auto Size Column Width
Redirect After Login on Wordpress
How to Convert Ipv6 from Binary for Storage in MySQL
How to Use Class Methods as Callbacks
Is It Recommended to Store PHP Sessions in Memcache
Setting Up Laravel on a MAC PHP Artisan Migrate Error: No Such File or Directory
How to Compress/Decompress a Long Query String in PHP
PHP 5.4 - 'Closure $This Support'
How to Run a PHP Without a Web Server
Symfony 2 Entitymanager Injection in Service
How to Solve Time Out in PHPmyadmin
What Is a Good Parser Generator for PHP