【发布时间】:2019-01-25 03:31:49
【问题描述】:
在 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 等价物。
【问题讨论】:
-
我会留给更有经验的社区成员来决定这里是否有重复,。也就是说,这个 SO 问题:可能会提供一些见解:stackoverflow.com/questions/9646397/…
-
这是有效的 PHP 代码吗? $var1 = new get_class($var2)(/*params*/);
-
很遗憾,我不是 PHP 专家,所以我不能肯定。我在扫描 C++ 问题时发现了这个问题。出现我链接的答案的谷歌搜索是“通用编程 php”。该搜索还出现了许多页面,这些页面似乎表明 PHP 中缺乏泛型是社区关注的一个问题。在这种情况下,“泛型”是 C++ 所称模板的更通用名称。
-
知道了。谢谢您的帮助。我不认为它完全是重复的,因为它不能解决我的确切问题。但这无疑为我指明了正确的方向。谢谢。