> MVC это способ выделения слоев приложения
Что такое способ?))) Какой способ? Причем здесь способ. Причем здесь слои?
Слой - это слой, а алогоритм это алгоритм. SSL слой, HTTP слой.
> выделения слоев приложения
Есть такое понятние - детализация объекта, скорее это, чем MVC.
Что под MVC в моем понимание:
Что такое способ?))) Какой способ? Причем здесь способ. Причем здесь слои?
Слой - это слой, а алогоритм это алгоритм. SSL слой, HTTP слой.
> выделения слоев приложения
Есть такое понятние - детализация объекта, скорее это, чем MVC.
Что под MVC в моем понимание:
PHP:
<?php
class controller {
/**
* Enter description here ...
* @var int
*/
private $currentSize = null;
/**
* Enter description here ...
* @var model
*/
private $model;
/**
* Enter description here ...
* @var view
*/
private $view;
protected $store = "html";
/**
* Enter description here ...
* @return bool
*/
public function interation() {
$socketID = curl_init("http://informer.gismeteo.ru/xml/30710_1.xml");
curl_setopt($socketID, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($socketID, CURLOPT_HEADER, 0);
curl_setopt($socketID, CURLOPT_COOKIE, 0);
curl_setopt($socketID, CURLOPT_TIMEOUT, 3);
$siteContent = curl_exec($socketID);
curl_close($socketID);
if ($siteContent !== false) {
if ($this->currentSize !== strlen($siteContent)) {
// data change
if ($this->model()->parce($siteContent)) {
$this->view()->render($this->model);
return true;
}
$this->currentSize = strlen($siteContent);
}
}
return false;
}
/**
*
* Enter description here ...
* @return model
*/
public function model() {
if (!$this->model instanceof model) {
$this->model = new model();
}
return $this->model;
}
/**
* Enter description here ...
* @return iView
*/
public function view() {
switch ($this->store) {
case "html": return new view_html();
case "php": return new view_php();
}
}
}
class model {
/**
*
* Enter description here ...
* @var array
*/
public $data = array();
public function parce($siteContent) {
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($xml_parser, XML_OPTION_SKIP_WHITE, 1);
xml_parser_set_option($xml_parser, XML_OPTION_SKIP_TAGSTART, 0);
xml_parse_into_struct($xml_parser, $siteContent, $infoWeather, $index);
// Today
$data = array();
$day = 0;
$weekDaysArray = array("empty", "ВС", "ПН", "ВТ", "СР", "ЧТ", "ПТ", "СБ");
$todsDaysArray = array("ночь", "утро", "день", "вечер");
while ($day < 4) {
$fIndex = $index['FORECAST'][$day * 2];
$tIndex = $index['TEMPERATURE'][$day];
$pIndex = $index['PHENOMENA'][$day];
$weekDay = $infoWeather[$fIndex]['attributes']['weekday'];
$todIndex = $infoWeather[$fIndex]['attributes']['tod'];
$data[$day]['date'] = (strlen($infoWeather[$fIndex]['attributes']['day']) == 1 ? 0 : "").$infoWeather[$fIndex]['attributes']['day'].".".(strlen($infoWeather[$fIndex]['attributes']['month']) == 1 ? 0 : "").$infoWeather[$fIndex]['attributes']['month'];
$data[$day]['weekday'] = $weekDaysArray[$weekDay];
$data[$day]['temperature'] = $infoWeather[$tIndex]['attributes']['max']." / ".$infoWeather[$tIndex]['attributes']['min'];
$data[$day]['tod'] = $todsDaysArray[$todIndex];
$data[$day]['phenomena'] = $infoWeather[$pIndex]['attributes']['precipitation'];
$day++;
}
$this->data = $data;
return true;
}
}
interface iView {
public function render(model $mode);
}
class view_php implements iView{
public function render(model $model) {
return file_put_contents("serialized.cache", serialize($model->data));
}
}
class view_html implements iView{
public function render(model $model) {
$html = "<table>";
foreach ($model->data as $day) {
$html .= "<tr><td>{$day['date']}</td><td>{$day['weekday']}</td><td>{$day['temperature']}</td><td>{$day['tod']}</td><td>{$day['phenomena']}</td>";
}
$html .= "</table>";
return file_put_contents("html.cache", $html);
}
}
$controller = new controller();
while (true) {
$controller->interation();
sleep(10);
}
?>