gpt4 book ai didi

PHP 相当于 C++ 模板

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:35 24 4
gpt4 key购买 nike

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

编辑:

所以,我 found a workaround对于我的问题。

但是,我仍然想知道是否有 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;
}

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

我认为这会奏效。

关于PHP 相当于 C++ 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54358588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com