Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将功能日历转换为(CakePHP)OOP版本_Php_Oop_Cakephp_Calendar - Fatal编程技术网

将功能日历转换为(CakePHP)OOP版本

将功能日历转换为(CakePHP)OOP版本,php,oop,cakephp,calendar,Php,Oop,Cakephp,Calendar,我想得到一些帮助,帮助我把我的网站从功能上的代码转换成面向对象的版本 我所拥有的: 我有一个功能性的日历,用于显示我们的工作班次。它一次显示一个月,行为周,tds为天。在每一个tds中,我都添加了移位(通常为2-5次)。 所有班次都存储在一个大的计划表中,其中一行为班次。 天数是在周末或月末使用一个简单的for循环来创建的。 很简单 我想做什么: 我最近又进入了OOP,我想我理解它的结构和所有方面,但我没有从这一点开始。 我想使用CakePHP,让一切设置和工作。 我还有很多其他的事情要担心,基

我想得到一些帮助,帮助我把我的网站从功能上的代码转换成面向对象的版本

我所拥有的: 我有一个功能性的日历,用于显示我们的工作班次。它一次显示一个月,行为周,tds为天。在每一个tds中,我都添加了移位(通常为2-5次)。 所有班次都存储在一个大的计划表中,其中一行为班次。 天数是在周末或月末使用一个简单的for循环来创建的。 很简单

我想做什么: 我最近又进入了OOP,我想我理解它的结构和所有方面,但我没有从这一点开始。 我想使用CakePHP,让一切设置和工作。 我还有很多其他的事情要担心,基本上我得从头开始,而不是重写我现在的版本。 但是作为一个开始,我想把我的日历转换成一个面向对象的版本,甚至可能是为了以后在蛋糕中使用。。 我把很多不重要的东西拿了出来,所以不要担心遗漏了半圆等等:)

因此,基本上,我不知道如何将其封装到类中。
到目前为止,轮班有一个添加/编辑/删除模式,我还在那些日子里投入更多的东西,比如特别活动
我在哪里定义像表格一样输出它们的实际方法?
我是否每月、每天、每班都要上课?还是只在一个数组中存储一个日历类和天?我可以编写一个视图方法来显示表,但这真的是一种方法吗

谢谢你在这方面的帮助

<?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;
    }

CakePHP是MVC——这意味着您应该将显示逻辑与其他逻辑分开。在这种情况下,从计划(模型)中找出应该显示的内容应该与任何HTML标记(视图)完全分开,由控制器仲裁两者之间的交互。一种方法是编写一个day类,其中包含一周中的一天(周一、周二等)、一个月中的一天和当天的事件,以及一个月中第二天对象的引用。在深入研究CakePHP之前,您需要了解MVC体系结构背后的概念,然后你可以看看