PHP 相当于C++模板

PHP equivalent to C++ Templates

本文关键字:模板 C++ 相当于 PHP      更新时间:2023-10-16

在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之前,我想把它放在一个用户对象中。当然,为了通用,我希望能够将其放入我喜欢的任何类中。就像C++模板一样。

注意:PHP 接口不适用于此,因为我需要实例化类,而不仅仅是使用一组给定的函数。

编辑:

因此,我找到了解决MY问题的解决方法。

但是,我仍然想要一个答案,是否有PHP等价物。

所以,我想出了一个解决方法,但我仍然会感谢其他答案。我仍然想知道是否有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;
    }

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

我认为这将奏效。