使用变量来定义我的方法

时间:2013-11-29 08:55:37

标签: php api function constants

我有一个函数,它是Post Affiliate Pro API调用的包装器。我正在尝试将可选参数传递给我的函数来设置数据范围。 API在其自己的一个参数中使用以下方法:

Gpf_Data_Filter::RANGE_LAST_7_DAYS 

这是我自己的功能。我想传递$ range选项。我这样做的方式显然会给出一个未定义的常量警告,然后会导致致命的错误。

function getSales($session, $userID, $campaignID, $range = RANGE_LAST_7_DAYS ){
    $request = new Pap_Api_TransactionsGrid($session);
    $request->addFilter('dateinserted', Gpf_Data_Filter::DATERANGE_IS, Gpf_Data_Filter::$range);
    // ...rest of function

作为第三个参数,我需要传递什么来复制它? :

Gpf_Data_Filter::RANGE_LAST_7_DAYS 

4 个答案:

答案 0 :(得分:2)

PHP允许您使用来自另一个类的常量作为函数或类方法的默认参数,所以这应该是完全正常的:

function getSales($session, $userID, $campaignID, $range = Gpf_Data_Filter::RANGE_LAST_7_DAYS)

答案 1 :(得分:1)

这样的事情应该有用......

function getSales($session, $userID, $campaignID, $range = null){
    $range = $range ?: Gpf_Data_filter::RANGE_LAST_7_DAYS;
    $request = new Pap_Api_TransactionsGrid($session);
    $request->addFilter('dateinserted', Gpf_Data_Filter::DATERANGE_IS, $range);
    // ...rest of function

答案 2 :(得分:1)

您基本上有三种选择:

  1. 传递实际常数:

    function getSales(..., $range = Gpf_Data_Filter::RANGE_LAST_7_DAYS)
    
  2. 定义您自己的值或常量并将它们映射到官方常量:

    function getSales(..., $range = 'seven') {
        static $ranges = [
            'one'   => Gpf_Data_Filter::RANGE_LAST_1_DAY,
            ...
            'seven' => Gpf_Data_Filter::RANGE_LAST_7_DAYS,
        ];
        $range = $ranges[$range];
    
  3. 接受一个数字并从中构造常量名称:

    function getSales(..., $range = 7) {
        $range = constant("Gpf_Data_Filter::RANGE_LAST_$range_DAYS");
    
  4. 哪一个效果最好取决于这些常量的变化程度以及是否要将原始常量暴露给类的用户。

答案 3 :(得分:1)

感谢silkfire:

function getSales($session, $userID, $campaignID, $range = Gpf_Data_Filter::RANGE_LAST_7_DAYS ){
    $request = new Pap_Api_TransactionsGrid($session);
    $request->addFilter('dateinserted', Gpf_Data_Filter::DATERANGE_IS, $range);

我现在已经设置了2杯咖啡阈值,然后将来发布在这里。