$user = Table("test");
$user=$user->find(10);
echo $user->tt;这种写法,我可以取出数据了,,但是这显然不是我所期待的。。我看过一些框架的写法。没有返回对象的。。我希望的是
$user = Table("test");
$user->find(10);
echo $user->tt;请问如何实现这样的效果呢,,,费解

解决方案 »

  1.   

    你find里做赋值不就行了? 有什么问题?
      

  2.   


    $user = Table("test");
    $user2=$user->find(10);
    echo $user2->tt;实例化数据表时,类的引用是$this,代表的是$user这个对象 ,find后返回另一个对象,再输出这个对象的属性,$user = Table("test");
    $user->find(10);
    echo $user->tt;这样的话,在find里要改变$this引用的对象,因为刚开始$this是空对象,find操作后,产生一个新对象,要使this指向这个新对象,,有点难
      

  3.   


    先问一下tt是什么。
    find(10)应该是找出10条记录的意思吧。
      

  4.   

    增加成员函数:
    function find2($n)
    {
    $this=$this->find($n);
    }再试一下:
    $user = Table("test");
    $user->find2(10);
    echo $user->tt;
      

  5.   


    哈哈,跟我想的一样,$this是不能赋值的
      

  6.   

    function find($id) {
       $data = $db->find($id)
       $this->data = $data;
    }function __get($field) {
       if(isset($ret[$field]) {
           return $ret[$field]
       }
       return null;
    }敢去看下PHP的__get()和__set()的说明吗
      

  7.   

    上面写错了
    function find($id) {
      $data = $db->find($id)
      $this->data = $data;
    }function __get($field) {
      if(isset($this->data[$field]) {
          return $this->data[$field]
      }
      return null;
    }
      

  8.   

    你当然不能也不应该在对象内部改变this指针。
    你看到的其它框架里的同样写法也肯定没有改变this的对象类型。照楼上的写法就行,或者$this->tt=$data->tt这样就行,看你的类的具体设计而定