在C ++中,我可以创建这样的模板类:
<template class l> class foo {
private:
l myVar;
foo::foo(l var) {
myVar = var
}
l getVar() {
return myVar
}
// etc...
}
我可以在PHP中做类似的事情吗?
我要问的原因:
假设我在PHP中有一个类化了MySQL表:
class Table {
private $conn;
private $name;
function __construct($connection, $tablename) {
$this->conn = $connection;
$this->name = $tablename;
}
// etc..
}
我可以使类函数处理某些类型的查询:
function GetAll() {
$sql = "SELECT * FROM " . $this->name;
$data = $this->conn->query($sql);
return $data;
}
当然,这只是一个例子,但希望您能明白。
我要做的是假设我有一个名为“用户”的类。在返回$ data之前,我想将其放入User对象。当然,一般来说,我希望能够将其放入我喜欢的任何类中。就像C ++模板一样。
注意:一个PHP接口将对此不起作用,因为我需要实例化该类,而不仅仅是使用一组给定的函数。
编辑:
所以,我found a workaround解决我的问题。
但是,我仍然想知道是否有PHP等效项。
答案 0 :(得分:0)
因此,我想出了一个解决方法,但是我仍然希望得到其他答案。我仍然想知道是否有PHP等效项。但是,这就是我所拥有的:
class Table {
private $conn;
private $name;
private filter; // a callback
function __construct($connection, $tablename, $callback) {
$this->conn = $connection;
$this->name = $tablename;
$this->filter = $callback;
}
// etc..
}
然后在GetAll中:
function GetAll() {
$sql = "SELECT * FROM " . $this->name;
$data = $this->conn->query($sql);
$data = $this->filter($data);
return $data;
}
然后,我可以传递一个回调,该回调以所需的方式过滤数据。
我认为这会起作用。