Константы должны быть определены только один раз, вверху вашего скрипта, например:
define ('FOO', "test foo");
define ('BAR', "test bar");
Тогда, чтобы получить к ним доступ, не ставьте их имена в кавычках:
class Boo {
public function runScare() {
$this->nowScaring(FOO); // no quotes
$this->nowScaring(BAR); // no quotes
}
private function nowScaring($person) {
// And no need to "grab their values" -- this has already happened
echo "<br/>Query selected is: " . $person . "<br/>";
}
}
Если по какой-то причине вы хотите получить значение константы и все, что у вас есть, это ее имя в переменной, вы можете сделать это с помощью функции constant
:
define ('FOO', "test foo");
$name = 'FOO';
$value = constant($name);
// You would get the same effect with
// $value = FOO;
В данном конкретном случае выглядит так, что константы класса могут быть более подходящими:
class Boo {
const FOO = "test foo";
const BAR = "test bar";
public function runScare() {
$this->nowScaring(self::FOO); // change of syntax
$this->nowScaring(self::BAR); // no quotes
}
private function nowScaring($person) {
echo "<br/>Query selected is: " . $person . "<br/>";
}
}