PHP类中使用new对当前类的方法返回值创建实例

扇翅膀的蝴蝶 发布于 2011/07/09 22:37
阅读 3K+
收藏 0
PHP

使用new对当前类中的方法返回值创建实例,会调用与方法同名的属性,若不存在同名属性,会报错。为什么会这样,求教。

<?php
class Foo {
  private $className = 'Bar';
  
  public function make() {
    return new $this->className(); //实际调用的是属性$className
  }
  
  public function callClassName() {
   $this->className();
  }

  public function className() {
    echo "foo\n";
  }

};

class Bar {
  public function hello() {
    echo "bar\n";
  }
};

$foo = new Foo();
$bar = $foo->make();  //获得类Bar的实例

echo "expecting 'bar': ";
$bar->hello();       //output:bar

echo "expecting 'foo': ";
$foo->callClassName();  //output:foo
?>

加载中
0
p
phper08
没错啊,$foo->callClassName()是对象的callClassName()方法, $foo->callClassName是对象的属性,方法是公共的,可以获取,属性是是私有的,当然会报错
返回顶部
顶部