【发布时间】:2017-03-18 11:53:38
【问题描述】:
目前,我正在审查十年前写的网站。这些网站使用旧的 MySQL API for PHP。 PHP 从 5.3 版本开始就没有升级过,所以我需要将每个数据库请求从旧 API 重写为 PDO。
原始编码器为每个表创建了一个包装 INSERT、SELECT 和 UPDATE 请求的对象。
在有很多行的表上,为每个对象引用每个包装请求的每个参数是非常痛苦的,而且我必须修改十几个站点!
所以,我想了一种方法来减少引用函数的每个参数所花费的时间,方法是将它们放在一个循环中,并在每个函数的两行代码中引用它们......
查看PHP手册后,似乎没有办法获得函数参数的引用。我可以复制或计算它们,但无法获得任何参考。
你有什么想法或技巧可以让这份工作不那么糟糕吗?
这是我不应该做的一个例子:
public function insert($titre, $tva, $intra, $remise = 0,
$tx_remise = 0, $frais = 0, $code = 0, $nom = '',
$design = '', $adr = '', $cp = '', $ville = '',
$tel = '', $fax = '', $rcs = '', $marq = '',
$marq_g = '')
{
$ville = htmlspecialchars($ville);
$design = htmlspecialchars($design);
$nom = htmlspecialchars($nom);
$adr = htmlspecialchars($adr);
$marq = htmlspecialchars($marq);
$marq_g = htmlspecialchars($marq_g);
$titre = $this->db->quote($titre);
$tva = $this->db->quote($tva);
$intra = $this->db->quote($intra);
$remise = $this->db->quote($remise);
$tx_remise = $this->db->quote($tx_remise);
$frais = $this->db->quote($frais);
$code = $this->db->quote($code);
$cp = $this->db->quote($cp);
$tel = $this->db->quote($tel);
$fax = $this->db->quote($fax);
$rcs = $this->db->quote($rcs);
以及我大概想做的事情:
public function insert(...)
{
foreach($function->argumentsReference as $ref)
$ref = quote($ref)
当然$function不是一个真实的对象,它只是用代码解释我的想法的一种方式。
谢谢。
【问题讨论】:
-
func_get_args()怎么样? -
func_get_args() 返回一个复制参数的数组,这不是我真正需要的,因为我的参数稍后在代码中被重用。
标签: php arrays reference arguments