PHP等同于C ++模板

时间:2019-01-25 03:31:50

标签: php c++

在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等效项。

1 个答案:

答案 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;
    }

然后,我可以传递一个回调,该回调以所需的方式过滤数据。

我认为这会起作用。