php oop调用方法来自同一个类的方法

时间:2011-07-04 02:08:12

标签: php oop

我遇到了以下问题

class class_name {

function b() {
   // do something
}

function c() {

   function a() {
       // call function b();
   }

}

}

当我像往常一样调用函数时:$ this-> b();我收到此错误:在C:...

中不在对象上下文中时使用$ this

函数b()声明为public

有什么想法吗?

我会感激任何帮助

由于

1 个答案:

答案 0 :(得分:7)

函数a()在方法c()内声明。

<?php

class class_name {
  function b() {
    echo 'test';
  }

  function c() {

  }

  function a() {
    $this->b();
  }
}

$c = new class_name;
$c->a(); // Outputs "test" from the "echo 'test';" call above.

在方法中使用函数的示例(不推荐)

原始代码无效的原因是因为变量的范围。 $this仅在类的实例中可用。函数a()不再是其中的一部分,因此解决问题的唯一方法是将实例作为变量传递给类。

<?php

class class_name {
  function b() {
    echo 'test';
  }

  function c() {
    // This function belongs inside method "c". It accepts a single parameter which is meant to be an instance of "class_name".
    function a($that) {
      $that->b();
    }

    // Call the "a" function and pass an instance of "$this" by reference.
    a(&$this);
  }
}

$c = new class_name;
$c->c(); // Outputs "test" from the "echo 'test';" call above.