【问题标题】:(php/oop) Method does not work in both directions(php/oop) 方法不能双向工作
【发布时间】:2012-10-24 02:00:21
【问题描述】:

我在 PHP 中有一些问题,我把这段代码放在我的 index.php 中:

$test = $wke ->sql
             ->insert("test")
             ->values(array("foo" => "bar"))
             ->go();

这段代码运行良好,但是当我在这样的方法(debug.class.php)中使用这段代码时:

$test = sql::insert("test")
             ->values(array("foo" => "bar"))
             ->go();

它不起作用:

Fatal error: Call to undefined method template::values() [...]

我的“插入”(和“值”)方法在我的 SQL 类中,而不是在我的模板类中。我知道我的第二个例子是在我的模板类中调用的,但最后我调用的是 sql::insert,而不是 self::insert 或 template::insert。这就是我迷路的原因。

对不起我的英语!提前谢谢你。

PS : 这是我的 sql::insert 方法

static $queryBuffer;
public function insert($in) {
   self::$queryBuffer->type = "insert";
   self::$queryBuffer->data->insert = $in;
   return $this;
}

【问题讨论】:

  • 由于你的 SQL 类中的insert 不是static,我认为你不能使用sql::insert

标签: php static-methods method-chaining


【解决方案1】:

如下更改插入函数。

static $queryBuffer;
public static function insert($in) {
   self::$queryBuffer->type = "insert";
   self::$queryBuffer->data->insert = $in;
   return $this;
}

插入应该是静态的,以不带对象的类名调用。

【讨论】:

  • 但是如果你使用static你就不能使用return $this
猜你喜欢
  • 2015-04-01
  • 1970-01-01
  • 2016-12-09
  • 2012-02-24
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
相关资源
最近更新 更多