zaczynam przechodzić na obiektowe pisanie skryptów. Z racji tego, że jestem typowym samoukiem nie do końca jestem pewien czy rozumiem pisanie w klasach.
Obiło mi się o uszy, że można pisać w klasach ale nie rozumieć obiektowości.
Poniżej podsyłam klasę kalendarza, która wczoraj napisałem. Można ją zaimplementować praktycznie bez grzebania w Htmlu.
<?php /* #Php calendar by Codeleft #Date: 2021-03-21 #Class */ class calendar { private $week_day; private $month_day; private $month_days; private $month; private $true_month; private $year; private $daysArray; private $monthsArray; private $calendarArray; private $first_month_day; private $side_blocks; private $side_blocks_left; private $side_blocks_right; private $calendarBody; private $calendarHead; private $calendar; private $dayname; function __construct() { //Numeric week day //Numeric day of the month //Week days names array //Numeric Month if ($this->month <= 9) { $this->month=+$this->month; } //Total month days num //Months Array $this->monthsArray = array('Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec','Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'); //Year //Block Calculations $this->side_blocks = 35 - $this->month_days; $this->side_blocks_left = $this->first_month_day -1; $this->side_blocks_right = $this->side_blocks - $this->side_blocks_left; } public function calendarData($key) { 'week_day_num' => $this->week_day, 'week_day_nam' => $this->daysArray[$this->week_day], 'month_day_num' => $this->month_day, 'curr_month_num' => $this->month, 'curr_month_days_num' => $this->month_days, 'curr_month_nam' => $this->monthsArray[$this->month-1], 'curr_year' => $this->year ); return $this->calendarArray[$key]; } public function calendarHeader($arrow) { $this->calendarHead = '<div class="calendar-header">'; if ($arrow == 'on') { $this->calendarHead .= '<div class="left-arrow"><</div>'; } $this->calendarHead .= ' '.$this->calendarData('curr_month_nam'); $this->calendarHead .= ' '.$this->calendarData('curr_year'); $this->calendarHead .= '</div>'; if ($arrow == 'on') { $this->calendarHead .= '<div class="right-arrow">></div>'; } $this->calendarHead .= '</div>'; return $this->calendarHead; } private function calendarWeekDays() { foreach ($this->daysArray as $day) { $this->dayname .= '<div class="day-cont day-names">'.$day.'</div>'; } return $this->dayname; } public function calendarBody() { //Calendar cont $bock_num = 0; $this->calendarBody .= '<div class="calendar-body">'; $this->calendarBody .= $this->calendarWeekDays().'<br />'; //Left empty boxes for ($b = 1 ; $b <= $this->side_blocks_left ; $b++) { $this->calendarBody .= '<div class="day-cont outer-cont">-</div>'; $bock_num++; } //Filled boxes for ($i = 1 ; $i <= $this->month_days ; $i++) { $con_date = $this->year.'-'.$this->true_month.'-'.$i; if (( ( $bock_num%7 ) == 0 ) && ( $bock_num > 0 )) { $this->calendarBody .= '<br />'; } if ($i == $this->month_day) { $this->calendarBody .= '<div class="day-cont current-day" data-date="'.$con_date.'"><b>'.$i.'</b></div>'; $this->calendarBody .= '<div class="day-cont weekend-day" data-date="'.$con_date.'">'.$i.'</div>'; } else { $this->calendarBody .= '<div class="day-cont" data-date="'.$con_date.'">'.$i.'</div>'; } $bock_num++; } //Right empty boxes for ($b = 1 ; $b <= $this->side_blocks_right ; $b++) { $this->calendarBody .= '<div class="day-cont outer-cont">-</div>'; $bock_num++; } $this->calendarBody .= '</div>'; return $this->calendarBody; } public function createCalendar($header,$arrow,$body) { $this->calendar .= '<div class="calendar">'; if ( $header == 'on' ){ $this->calendar .= $this->calendarHeader($arrow); } if ( $body == 'on' ){ $this->calendar .= $this->calendarBody(); } $this->calendar .= '</div>'; return $this->calendar; } }
/* #Php calendar by Codeleft #Date: 2021-03-21 #Css */ .calendar{ display: inline-block; padding: 10px; background-color: white; border: 1px solid #78909c; color: #455a64; border-radius: 3px; } font-family: Arial, Helvetica, sans-serif; color: #78909c; margin-bottom: 10px; border: 1px solid #e6e6e6; border-radius: 3px; background-color: white; padding: 15px; text-align: center; font-weight: bold; } .clendar-header-val{ display: inline-block; } .left-arrow{ float: left; cursor: pointer; } .right-arrow{ float: right; cursor: pointer; } .calendar-body{ display: inline-block; } .day-cont{ font-family: Arial, Helvetica, sans-serif; display: inline-block; width: 100px; height: 100px; border: 1px solid #e6e6e6; color: #999999; background-color: white; padding: 3px; cursor: pointer; } .day-cont:hover{ border: 1px solid #717171; color: #5a5a5a; } .current-day{ background-color: #ff9800; color: white; border-radius: 10%; } .outer-cont{ border: 1px solid #e6e6e6; color: white; } .outer-cont:hover{ cursor: default; border: 0; color: white; } .weekend-day{ color: #ef5350 !important; } .day-names{ max-height: 20px!important; text-align: center; font-weight: bold; border-radius: 3px; } .day-names:hover{ border: 1px solid #e6e6e6!important; color: #8a8a8a!important; cursor: default!important; }
Chciałbym aby jakaś surowa dusza wytknęła mi błędy i podpowiedziała na co zwrócić uwagę.
Dzięki za konstruktywną krytykę !
