代码之家  ›  专栏  ›  技术社区  ›  Chipster

与C++模板等价的PHP

  •  0
  • Chipster  · 技术社区  · 5 年前

    在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接口不适用于此,因为我需要实例化类,而不仅仅是使用一组给定的函数。

    编辑:

    所以,我 found a workaround 因为我的问题。

    不过,我还是想知道是否有一个php等价物。

    1 回复  |  直到 5 年前
        1
  •  0
  •   Chipster    5 年前

    所以,我想了一个办法,但我还是希望有其他的答案。我仍然想知道是否有一个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;
        }
    
    

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

    我想那会有用的。