1.可变变量:
$a = 'hello';
$$a = 'world';
echo $$a . '
';
echo "$a ${$a}
";
// 以下写法更准确并且会输出同样的结果
echo "$a $hello";
// 要将可变变量用于数组,必须解决一个模棱两可的问题。
// 这就是当写下$$a[1]时,解析器需要知道是想要$a[1]作为一个变量呢,还是想要$$a作为一个变量并取出该变量中索引为 [1] 的值。
// 解决此问题的语法是,对第一种情况用${$a[1]},对第二种情况用${$a}[1]。
2.可变函数:
function foo() {
echo "In foo()
";
}
function bar($arg = '') {
echo "In bar(); argument was '$arg'.
";
}
$func = 'foo';
$func(); // This calls foo()
$func = 'bar';
$func('test'); // This calls bar()
// 还可以利用可变函数的特性来调用一个对象的方法
class Foo
{
function Variable()
{
$name = 'Bar';
$this->$name(); // This calls the Bar() method
}
function Bar()
{
echo "This is Bar";
}
}
$foo = new Foo();
$funcname = "Variable";
$foo->$funcname(); // This calls $foo->Variable()
3.可变类名(PHP 5.3.0之后):
class MyClass
{
const constant = 'constant value';
private $context = 'my test';
static public function showConstant() {
echo self::constant . "
";
}
public function showField() {
echo $this->context ;
}
}
echo MyClass::constant . "
";
$classname = "MyClass";
echo $classname::constant . "
"; // 调用常量
$classname::showConstant(); // 调用静态方法
$object = new $classname; // 创建对象
$object->showField();