echo $a->$b->c();  补全代码 使之输出 abc;
这题该怎么做啊

解决方案 »

  1.   

    应该是echo $a->b->c();吧?
      

  2.   

    单纯说结果,以下是方法之一class c{
    function c()
    {
    return 'abc';
    }
    }
    $b = 'obj';
    $a->$b = new c;
    echo $a->$b->c();
      

  3.   

    谢谢amani11
    能讲下为什么是这样吗?
    $a是一个不存在的变量  $b这样是一个字符串 
    $a->$b    = new c; 这一句是重新赋值吗?
    $a->$b 又是什么意思?
    ->  不是对象调用属性或方法吗?
      

  4.   


    class a{
       
       var $b;
       function b(){
           $b = new b();
       }
    }class b{   function c(){
          echo 'abc';
       }
    }$a = new a();
    $a->b();
    echo $a->b->c();
      

  5.   

    不行,类内部不能生成实例,不过在外部的话倒是可以
    class a{
       var $b;
       function a($a)
       {$this->b=$a;}
    }
    class b{
       function c(){
          return 'abc';
       }
    }
    $a = new a('test');
    $a->b=new b();
    echo $a->b->c();
      

  6.   

    我想多了看来,你这个实现是什么涵义,oop真愁人。。
      

  7.   

    面试官应该是这个意思.<?phpclass b{
     function c(){
     
     return 'abc';
     }
    }class a{
     public $b=NULL;
       function __construct(){
     $this->b=new b;
     }
     
    }$a=new a;
    echo $a->b->c();?>
      

  8.   

    题目就是 echo $a->$b->c(); 没错的
    要是echo $a->b->c();我就不用来问了
    还有没有其它答案 谁给我讲解下我在三楼的提问?
      

  9.   

    LZ你想太多了,这中间的$就是变量的变量,没那么复杂看看下面的东西================当然此题可以用别的方式,但是中间那个变量,是类似的
    现在没环境,应该是没错的
    class c{
        function c()
        {
            return 'abc';
        }
    }$obj = new c;
    $a->obj = $obj;
    echo $a->obj->c();echo '<br /><br />';$b = 'obj';
    echo $a->$b->c();
      

  10.   

    obj是个关键字吗,还是函数?
    他的作用是生成一个抽象的实例?还是类似指针的传址?
      

  11.   

    哦,不是关键字。。
    print_R($a);
    出来的是:
    stdClass Object ( [abc] => c Object ( ) ) 
      

  12.   

    这种方法就是可以生成一个结构类似数组的对象,key自己定,value是个对象(可以是类和数组和变量和常量)(测试过了),看起来跟数组很像,不过测了下发现不能使用数组[]的方法调用value,当然也不能用$a.key来调用,会把$a当做字符串来处理报错。。php面向对象方面果然有很多需要学习的掩面而泣。。