I am trying to use a variable in an array within my class
class MyClass {
public static $a = "World";
public static $b = array("Hello" => self::$a);
}
This code doesn't work. Should I be using MyClass::$a or something else. Any ideas?
You probably can instatiate them at runtime:
class MyClass {
public static $a;
public static $b;
}
MyClass::$a = "World";
MyClass::$b = [ "Hello" => MyClass::$a ];
Or you can create a static initialization method:
class MyClass {
public static $a;
public static $b;
public static function init(){
static::$a = "World";
static::$b = [ "Hello" => static::$a ];
}
}
MyClass::init();
If your $a won't change, make it a constant
class MyClass {
const a = "World";
public static $b = array("Hello" => self::a);
}
var_dump(MyClass::$b);
class MyClass {
public static $a = "World";
public static $b;
public function __construct(){
self::$b = array("Hello" => self::$a);
}
}
$obj = new MyClass();
__construct function. Thanks a lot!
self::$arequires a runtime evaluation. If your $a isn't going to change, make it a constant$bin the class constructor.staticif (!$b) { self::$b = array(...) }.