Александр Воробьев

Александр Воробьев
Рейтинг
59
Регистрация
03.02.2020

В принципе крайне редко редактирую что ли бо по ftp (да и вообще на бою). В крайнем случае на серваке vim.

А вообще, когда в редких случаях (т.е. нельзя сказать, что я "собаку съел" в таком кейсе), использую Kate. Конечно пробовал шторм (это основное IDE у меня) - но не пошло. Kate и как системный редактор и, коли уж пошел на ftp из GUI, то просто в менеджере файлов открываю как бы и локально было.

И еще вариант

function day_of_programmer_shortcode(): string
{
    $data = explode(' ', date('Ymd z', mktime(0, month: 9, day: 12)));
    [$date, $number] = array_map('intval', $data);
    if ($number === 255) {
        ++$date;
    }
    if ($date === (int)date('Ymd')) {
        return '<div class="day-of-programmer-message">Поздравляем с Днем программиста!</div>';
    }
    return '';
}

Все, пожалуй пора идти работать, а то завтра в фонтаны нырять....

Владимир Коток :
unction day_of_programmer_shortcode() {

Как вариант (правда не тестил)

function day_of_programmer_shortcode(): string
{
    $date = mktime(0, month: 9, day: 12);
    if (255 === (int)date('z', $date)) {
        $date += 86400;
    }
    $nextDate = $date + 86400;
    $now = time();
    if ($now >= $date && $now < $nextDate) {
        return '<div class="day-of-programmer-message">Поздравляем с Днем программиста!</div>';
    }
    return '';
}

Еще, кстати, аргумент пришел в голову. Как исходные данные: речь о php и используем модульность. В случае массива последовательность следующая. Где то в начале инициализируется массив (возможно пустой) скажем $dict. Далее подключается один или множество языковых файлов. Примерно такого содержания

<?php
$dict['key1']='value1';
$dict['key2']='value2';

Т.е. идет просто заполнение массива.

Если же будет храниться в json.  То для каждого файла придется делать (в грубом варианте):

$json = file_get_contents('module_lang.json'); //считали
$moduleTexts = json_decode($json); // преобразовали
$dict = array_merge($dict, $moduleTexts); // объединили с ранее набранным массивом

А на противоположной стороне весов

include_once 'module_lang.php'; 

Обработка ошибок за скобками - т.к. она одинаковая

В продолжение с битым php файлом, ведь ровно точно так же если и json будет кривой. При его декодировании ловим эксцепшн и принимаем решение согласно принятым правилам.
Sly32 #:

А чем сложнее? Структура похожая. А что произойдет, если ты заинклюдишь пхпшный файл, в котором ошибка будет? Ну ошибся редактор, поудалял разделители какие?

Ну тут конечно на правах ИМХО (по моему скромному мнению).  Это скорее по ощущениям, особенно если json храниться в одну строку. (а стандартная phpшная функция упаковки массива/объекта в json именно в одну строку формирует.)  можно сказать "Основное"  для меня это нет необходимости декодировать и кодировать. т.к. код в конечном итоге все равно с массивом будет работать.

Синтаксис можно проверить повесив валидацию на git хук (в прочем json тоже так же можно обработать). 

Все же мы говорим об интерфейсных текстах, это не контент и тесно связан с кодом. Т.е. все равно будут ситуации подобно: "Ответственный Вася решил что некий интерфейсный текст больше не нужен и грохнул ключ значение из json или массива. А у нас по бизнес логике на конкретном проекте предусмотрено, что для отсутствующих текстов берется из дефолтного языка - в итоге результат будет не такой на какой рассчитал Вася". Т.е. я к тому, что коль уж говорим об интерфейсах, то этот процесс все равно лучше держать под контролем в общем случае.

Опять же, даже если мы забьем на gitхуки и валидацию - есть же обработка ошибок. Перехватили - и дальше поступаем согласно бизнес логики проекта.

Вот на практике проектов: не скажу, что было много мультиязычных, но меняются эти тексты крайне редко. Вот есть проект, где прям часто есть желание, по крайней мере пока, у владельцев "немного поправить". По началу закинул в бд (просто что б задействовать штатные механизмы редактирования контента, чтоб не пилить UI для этого) - в итоге пришли, что "ну нафиг".  За тексты отвечает конкретный работник, не программист, но все  делает четко и без проблем. Правда в админке есть редактор с подсветкой - ошибку сразу видно если что.

Sly32 #:
По поводу хранения данных в коде, а если ты хранишь переводы в пхпшном формате, то это неизбежно, То у нас в питоне за такое отбивают руки.
Никакие данные не могут быть захардкожены. Для замены одного слова нужен программист, а это сильно дорого.

Ну тут не совсем так. Ведь в условном текстовом редакторе json править без ошибок сложнее :)  Естественно этот массив не хранится в файле где есть логика. Просто это читать как разновидность "формата хранения текстов" :) Ну, а если прикручивать интерфейс для тех, кто по своим обязанностям имеет право править эти тексты - тут вообще становится пофиг как оно хранится

ArbNet #:
Если бы я не пребывал, то сейчас не утверждал, что работа с БД в данном случае для мультиязычности будет намного эффективнее работы с файлами.

Можете озвучить характеристики и условия стенда?  "намного" это сколько?  

ArbNet #:
Так как вы делаете я делал в самом начале создания своих движков для сайтов. Но потом отказался, и не помню уже на каком форуме, очень давно ~2005г., но мне просто сказали зачем хранить и загружать переводы для слов\фраз из файлов, когда есть БД. Я тогда подумал и сделал всё через БД и с тех пор всегда так делаю. А у вас мышление начинающего кто просто не умеет работать с БД, всё же делается элементарно если вы умеете работать с БД.

Еще раз повторю: попробуйте все на практике. Не на сайте с посещаемостью "ты, да я, да мы с тобой". А на сайте на котором есть посетители. И который имеет контент.  

ArbNet #:
Сразу идёт работа с переменными 😆 по вашему они где находятся? PHP сначала резервирует в куче оперативки память под переменную, потом вставляет в эту память её значение и так с каждой...

Ну т.е. из БД вы минуете эту стадию и тексты волшебным образом попадают в html минуя стадию создания переменной?  Сколько преобразований получается по пути из текста записанного в файле базы данных, до html? посчитайте на холодную, да и на горячую. А далее сравнивайте.

ArbNet #:
Эта тема не о моём фреймворке. Да и вы несёте полнейшую чушь, смешивая в одну кучу, файлы стилей которые по сути статичны и не требуют модификаций с генерацией страницы в которой, в зависимости от параметров запроса нужно генерировать содержание.

Просто внимательно посмотрите трезво на фреймворк свой, вы там тоже пользуетесь файлами, более того суете в xml то, что потом приходится "если грубо" преобразовывать в PHP - и при этом считаете его мего быстрым и не жрущим ресурсы, а тут простой инклуд, по вашему убивает память..... смешно. где логика то?

Sly32 #:
Хороший вопрос,

Кстати, вот выше в пояснении нашему суперразарбу вспомнился еще один  аргумент в пользу файлов содержащих простые массивы. Аргумент правда касается PHP, в питоне не смотрел как устроено в этом плане.  В итоге у меня получается обычный PHP код, который, как я полагаю (глубоко я в механизм работы OpCahce не погружался) так же как и прочий постоянно используемый код один раз парсится и уже хранится в памяти в виде опкодов.

Всего: 704