如何处理程序库调用中的参数复杂性

时间:2014-03-14 15:49:34

标签: php refactoring tcpdf

我正在使用一个名为TCPDF的库,并且遇到了这个特殊问题 - 我想使用writeHTMLCell函数。 Documentation states that usage is:

writeHTMLCell ($w, $h, $x, $y, $html='', $border=0, $ln=0, $fill=false,
               $reseth=true, $align='', $autopadding=true);

在代码中我有类似的东西:

writeHTMLCell($w1, '', '', $ypos, $html2['left']);
writeHTMLCell($w2, '', $xpos, $ypos, 'illustration', 0, 1);
writeHTMLCell($w2, '', '', '', $html2['right'], 0, 1);
writeHTMLCell($width, '', '', $ypos, $html, 0, 1);
writeHTMLCell('', '', '', '', $html, 0, 1);
writeHTMLCell(0, '', '', $ypos, $html, 0, 0, false, true, '', false);
writeHTMLCell(40, 0, 51, 65, $html, 0, 1, 0, true, 'L', true);

等等。这只是其中一项功能。还有更多。要使用这些功能,我必须知道或记住或查找:

  • 参数的顺序
  • 我需要的参数是什么,
  • 以及可以跳过/默认的参数

我正在寻找一种方法来简化编写/编辑这些函数参数的任务。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

大多数IDE(链接中的NetBeans)都以parameter hints执行此操作。您还可以获得code completionsyntax highlighting以及更多内容。

答案 1 :(得分:0)

一种方法是编写我自己的包装器类,但我认为这对于第三方库来说太多了。这几乎就像创建第三方独立产品,这不是我想做的事情。另一种方法是使用带参数列表的数组,如

//me preparing an array with my own values
$param = array('width' => $width, 'height' => $height, ... 'padding' => $padding);

//and this is how I will always call this function from now on syntax-wise:
writeHTMLCell($param['width'], $param['height'], ..., $param['padding']);

这种方式不会隐藏复杂性,实际上它会为它添加一些代码,但这样做会使函数调用失去神秘感,并使复杂性立即可见。

我想知道是否有办法以另一种方式做到这一点,或者我是否已经描述了一种非常好的方式?