Просмотр поста

.
ДоХтор

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__),
    'Тест'
);