在没有参数的情况下将变量传递给函数

时间:2014-09-17 15:21:34

标签: php function

我从日历类中获得了以下功能。虽然我无法弄清楚如何将$content变量传递给它,因为它不是一个参数。任何人都知道如何为此设置$content变量,以便函数读取它并知道它的设置?

private function day($day){
        if((bool) $day){
            $class   = $this->_class_defintions['working_day'];
            $content = isset($this->_day_data[($day)]) ? $this->_day_data[($day)] : '';
            $day_num = '<div class="'. $this->_class_defintions['day_number'] .'">'. $day .'</div>';

            /**
             * if there is content, set the class to whatever is content_day
             */
            if($content !== ''){
                $class = $this->_class_defintions['content_day'];
            }
        }else{
            $class   = $this->_class_defintions['blank_day'];
            $content = '';
            $day_num = '';
        }

        return '
            <td class="'. $class. '">
                <div class="calendar_day_container">
                    '. $day_num . $content .'
                </div>
            </td>
        ';
    }

查看类,这是应该设置$content的函数,但它不起作用。

 /**
     * sets the data for a given day
     *
     * @param integer $day -- the zero key of the day to be modified
     * @param mixed $content -- the content for that day
     * @param boolean $append -- this will say to overwrite the day or not with the data. Defaults to true
     * @access public
     * @return return type
     */
    public function setDayData($day, $content, $append = true){
        $current_content       = isset($this->_day_data[$day]) ? $this->_day_data[$day] : '';
        $this->_day_data[$day] = $append ? $current_content . $content : $content;

        return $this;
    }

我尝试设置内容但运行以下内容:

 $test = "This is a test";
            $this->setDayData($list_day,$test, true); 

2 个答案:

答案 0 :(得分:0)

您可以向day()函数添加参数并为其指定默认值, 然后检查函数内的$myArg的值:

private function day($day, $myArg = NULL){
    if($myArg !== NULL) {
        //do something
    }
}

答案 1 :(得分:0)

你神秘的setDayData函数所做的只是将内容与给定日期相关联。

如果将append设置为false,则内容将覆盖以前的所有内容。如果您将其设置为true,则会将新内容添加到上一个内容。

这意味着,如果您在任何指定日期仅拨打setDayData一次,则无论append参数如何,结果都将完全相同。

班级中没有content成员,因为班级处理多天 相反,每个内容都在_day_data数组中调度,按日索引。

因此,要检索它,您必须在给定的一天内查看此数组,这正是行$content = isset($this->_day_data[($day)]) ? $this->_day_data[($day)] : '';的作用,尽管$day周围的大括号是非常不必要的。

你的神秘代码对课程的作用是:

  • 如果blank day = 0,则将其设置为$day(我想知道你为什么要将它转换为bool,顺便说一下)
  • 如果working day!= 0并且当天没有定义任何内容,则
  • 将其设置为$day
  • 如果$ day!= 0并且当天有内容定义,则将其设置为content day

我认为blank在本月之外的几天内被用作填充,working用于未定义内容(我认为是议程说明)的日期,以及content天数哪里有要显示的笔记。

据我所知,setDayData方法运作正常 但是,它是课程的一部分,所以如果你没有创建课程实例,你就不会得到任何东西,在 之前调用setDayData几次 调用您的day($day)方法 ,确保您不会调用神秘类的其他方法来破坏内容

要查看正在发生的情况,拨打var_dump时,一些电话会显示您调用setDayData之后和拨打day()之前对象所处的状态。

我敢打赌,你没有在同一个对象实例上工作,或者你调用了另一个搞乱了内容的类方法。