4

I know its possible to access an object property/method using a variable as its name

ex.:

$propName = 'something';
$something = $object->$propName;

Is it possible to do the same w/ constants or static properties?

I've tried:

$constName = 'MY_CONST';

MyCLass::{$constName};

and

$obj::{$constName};

But nothing seems to work and I couldn't find it anywhere.

3 Answers 3

10

Use: Class::$$constName, this is similar to normal variable variables.

Demo:

<?php    
class MyClass {
    public static $var = 'A';
}
$name = 'var';
echo MyClass::$$name; // echoes 'A'

Constants can be access with the constant function:

constant('MyClass::'.$constantName)
Sign up to request clarification or add additional context in comments.

Comments

2

This works for me:

<?php
class Test {
  public static $nombre = "pepe";

  public function __construct() {
    return self;
  }
}

$varName = "nombre";
echo Test::${$varName};

Comments

1

You can use the constant function:

constant('bar::'. $const);
constant("$obj::". $const); //note the double quote 

1 Comment

your 1st example worked, but i've tried the second way and it sent the error: "Object of class tst could not be converted to string", even with the double quoted string. thanks for your answer anyway

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.