Delphinum, сделал разделение... На мой взгляд стало ещё хуже -- кода больше, и читабельность снизилась. Да и где-то у меня в логике ошибка, потому что теперь не работают вызовы более одного. Но мне нужен ответ на вопрос, правильно ли я сделал разделение? Что-то мне подсказывает, что нет
Набор функций (+/-)
session_id() ?: session_start();
function getNameFile($id) {
$dir = 'data';
is_dir($dir) ?: mkdir($dir);
$nameFile = $dir .'/'. $id .'.txt';
return $nameFile;
}
function getMaxTime($days = 1) {
// $maxTime = $time + 3600 * 24 * $days;
$maxTime = time() + 15; # <---Строка для теста
return $maxTime;
}
function getData($id) {
$nameFile = getNameFile($id);
$maxTime = getMaxTime();
$data = (!file_exists($nameFile) ? ['tm' => $maxTime, 'cnt' => 0]
: unserialize(file_get_contents($nameFile)));
return $data;
}
function setData($id) {
$nameFile = getNameFile($id);
$maxTime = getMaxTime();
$data = getData($id);
$id = (isset($_GET['id']) ? trim(strip_tags($_GET['id'])) : $id);
$go = (isset($_GET['go']) ? trim(strip_tags($_GET['go'])) : '');
if (!empty($go)) {
$data['cnt']++;
file_put_contents($nameFile, serialize($data));
header('Location: '. $go);
exit;
}
if ($data['tm'] < time()) { // Перезапись
$data['tm'] = $maxTime;
$data['cnt'] = 0;
file_put_contents($nameFile, serialize($data));
}
}
function outData($id, $href, $name, $clicks = 10) {
$nameFile = getNameFile($id);
$maxTime = getMaxTime();
$data = getData($id);
setData($id);
return ($data['tm'] >= time() && $data['cnt'] < $clicks ? '<a href="?id='. $id .
'&go='. $href .'">'. $name .'</a> ('. ($clicks - $data['cnt']) .')<br/>' : '');
}
function i() {
static $i = 0;
return ++$i;
}Использование (+/-)
echo outData(
i().session_id(),
basename(__FILE__),
'Тест'
);