У меня есть следующая функция, которую я получил от класса календаря. Хотя я не могу понять, как пройти $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);
Вы можете добавить аргумент к day()
функция и дать ему значение по умолчанию,
затем проверьте значение $myArg
внутри функции:
private function day($day, $myArg = NULL){
if($myArg !== NULL) {
//do something
}
}
Какая твоя загадочная 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()
,
Держу пари, вы не работаете с тем же экземпляром объекта или вызвали другой метод класса, который испортил содержимое.