我希望得到一些帮助,可以将我的网站从功能编码转换为OOP版本。
我有什么: 我有一个功能编程的日历,用于显示我们的工作班次。它一次显示一个月,行数为周,tds为天。在这些tds的每一个中,我都添加了班次(通常为2-5)。 所有班次都存储在一个大的计划表中,其中一行是班次。 使用简单的for循环创建天数,打破星期或月末的行。 很简单..
我想做什么: 我最近再次进入OOP,我想我理解结构和所有,但我错过了一个重点开始。 我想使用CakePHP,让所有设置和工作。 我还有很多其他需要担心的事情,基本上必须从头开始而不是重写我当前的版本。 但作为一个开始,我想在某种程度上将我的日历转换为OOP版本,甚至可能在以后的Cake中使用。 我带了很多不重要的东西,所以不要担心缺少semicola等:)
所以基本上,我真的不知道怎么把它包装成班级 到目前为止,还有一个添加/编辑/删除模式,我也会在特殊事件中投入更多东西 我在哪里定义像桌子一样输出它们的实际方法? 我是否为每个月,每天,班次建立一个班级?或者只有1个日历类,日期存储在数组中?我可以编写一个视图方法来显示表格,但这真的是要走的路吗?
感谢您对此的任何帮助
<?php
require_once('connect.php');
function drawCalendar($month, $year) {
global $dbh;
$date = new DateTime($year . '-' . $month . '-01');
$daysInMonth = $date->format('t');
/* start calendar */
$calendar = '<table id="calendar-table" data-month="' . $month . '" data-year="' . $year . '">';
$calendar .= '<tbody id="calendar-body">';
$calendar .= '<tr>';
/* blank days start of month */
for ($i = 1; $i < $date->format('N'); $i++) {
$calendar .= '<td class="calendar-day blank"></td>';
}
/* days */
$interval = DateInterval::createfromdatestring('+1 day');
for ($i = 1; $i <= $daysInMonth; $i++, $date->add($interval)) {
$queryDate = $date->format('Y-m-d H:i:s');
$qs = 'SELECT * FROM schedule AS s WHERE s.start BETWEEN :start AND DATE_ADD(:start, INTERVAL 1 DAY) ORDER BY s.start, s.end';
$query = $dbh->prepare($qs);
$query->execute(array(':start' => $queryDate));
$calendar .= '<td class="calendar-day">';
foreach ($schedule as $shift) {
$calendar .= '<div class="shift">...</div>';
}
$calendar .= '</td>';
/* end of day */
/* weekcheck */
if ($date->format('N') == 7) {
$calendar .= '</tr>'; // end of week
if ($i < $daysInMonth)
$calendar .= '<tr>'; // new week with at least 1 day
}
}
$date->sub($interval); /* back to last of month */
/* blank days end of month */
for ($i = $date->format('N'); $i < 7; $i++) {
$calendar .= '<td class="calendar-day blank"></td>';
if ($i == 6)
$calendar .= '</tr>'; // end of week
}
$calendar .= '</tbody>'; // body
$calendar .= '</table>'; // wrapper
return $calendar;
}