灵活的功能参数,如何做好用的做法?

时间:2013-02-27 04:30:54

标签: php

function query($query, $cacheType, $cacheDuration, $responseType)

$query = Query to be executed.
$cacheType = Memcached etc.
$cacheDuration = Duration of cache.
$responseType = MySQL response type. (e.g array, json etc)
  1. 我不想使用缓存,但希望是JSON。我怎样才能传递这两个参数?

  2. 如果我将cacheType设置为“Memcached”,我如何确保$ cacheDuration设置为有效整数?

  3. 如果我向查询功能添加第五个参数(例如$ five),如何在不破坏整个网站使用的调用的情况下添加它?他们仍然提供4个参数,但查询更新为5个参数。

  4. 我主要是在寻找“良好实践”的反应,否则我知道将NULL值传递给params。

3 个答案:

答案 0 :(得分:2)

$paramsArray = array();
$paramsArray['query'] = 'Query to be executed.';
$paramsArray['cacheType'] = 'Memcached etc.';
$paramsArray['cacheDuration'] = 'Duration of cache.';
$paramsArray['responseType'] = 'MySQL response type. (e.g array, json etc)';

echo query($paramsArray);

function query($paramsArray = array()) {

  $query = $paramsArray['query'];
  $cacheType = $paramsArray['cacheType'];
  $cacheDuration = $paramsArray['cacheDuration'];
  $responseType = $paramsArray['responseType'];

  // Your query operations with $query, $cacheType, $cacheDuration, $responseType
}

答案 1 :(得分:0)

通过设置默认值来使用这样的第五个参数,它不会破坏现有的函数调用。

function query($query, $cacheType, $cacheDuration, $responseType, $fifth = NULL)

你也可以用4参数调用这个函数

echo query($query, $cacheType, $cacheDuration, $responseType);

答案 2 :(得分:0)

  

我不想使用缓存,但希望是JSON。我怎么能通过那些   2参数?

不明白。

  

如果我将cacheType设置为“Memcached”,我该如何确保$ cacheDuration   设置为有效整数?

我可能也不理解那个,但您可以使用is_int()函数进行验证。

  

如果我向查询功能添加第五个参数(例如$ five),我该怎么办?   添加它而不破坏整个网站使用的调用?他们仍然   给出4个参数,但查询更新为5个参数。我在看   对于“良好实践”的反应大多数,否则我知道传递NULL   值得参考。

我只是想告诉你,你可以重载这个函数,但我发现它在php(PHP function overloading)中不支持,所以你可能会很好地添加一个带有默认值的第五个参数值null并在$fifth != null

时执行任何操作