Передача переменной в функцию без параметра

У меня есть следующая функция, которую я получил от класса календаря. Хотя я не могу понять, как пройти $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);

0

Решение

Вы можете добавить аргумент к day() функция и дать ему значение по умолчанию,
затем проверьте значение $myArg внутри функции:

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

Другие решения

Какая твоя загадочная setDayData Функция просто связывает содержимое с данным днем.

Если вы установите append в falseсодержимое перезапишет любое предыдущее содержимое. Если вы установите его true, он добавит новый контент к предыдущему.

Это означает, что если вы позвоните setDayData только один раз за любой день, результат будет точно таким же, независимо от append параметр.

Там нет такого понятия, как content член в вашем классе, потому что класс обрабатывает несколько дней.
Вместо этого каждый контент отправляется внутри _day_data массив, проиндексированный по дням.

Таким образом, чтобы получить его, вы должны заглянуть внутрь этого массива для данного дня, который является именно тем, что строка $content = isset($this->_day_data[($day)]) ? $this->_day_data[($day)] : ''; делает, хотя брекеты вокруг $day совершенно ненужно.

Что делает ваш загадочный код в отношении класса:

  • установите это blank day если $day= 0 (интересно, почему вы хотите привести его к bool, кстати)
  • установите это working day если $day! = 0 и на этот день не определено ни одного контента
  • установите это content day если $ day! = 0 и для этого дня определено содержимое

Я полагаю blank используется в качестве наполнителя для дней вне текущего месяца, working в те дни, когда не было определено никакого содержания (примечания к повестке дня), и content в дни, когда есть заметки для отображения.

Насколько я могу судить, setDayData метод работает отлично.
Тем не менее, это часть класса, поэтому вы ничего не получите, если не создадите экземпляр класса. setDayData несколько раз до звоню вашему day($day) метод а также убедитесь, что вы не вызываете другие методы таинственного класса, которые могут испортить содержимое.

Чтобы увидеть, что происходит, несколько звонков var_dump должен показать вам, в каком состоянии находится ваш объект после того, как вы позвонили setDayData и прежде чем позвонить day(),

Держу пари, вы не работаете с тем же экземпляром объекта или вызвали другой метод класса, который испортил содержимое.

0

По вопросам рекламы [email protected]