Как обновить старый синтаксис PHP-обработчиков (Стрелочные функции)
В старых PHP-проектах (Особенно в движках форумов и CMS, написанных в 2010‑х) часто встречается однотипный шаблон: обработка BBCode через
Такой код рабочий, но визуально тяжёлый и избыточный. Современный PHP (начиная с версии 7.4) позволяет сделать его чище, лаконичнее и удобнее в поддержке — за счёт стрелочных функций.
Типичный старый вариант выглядит так:
Здесь три «лишних» элемента:
Это не ошибка, но в проектах с десятками подобных обработчиков такой стиль делает...
preg_replace_callback с обычными анонимными функциями, где для доступа к $this приходится использовать конструкцию use($this).Такой код рабочий, но визуально тяжёлый и избыточный. Современный PHP (начиная с версии 7.4) позволяет сделать его чище, лаконичнее и удобнее в поддержке — за счёт стрелочных функций.
Что было раньше: Классический синтаксис
Типичный старый вариант выглядит так:
ВыделитьPHP
$text = preg_replace_callback(
'/\[url(.*?)\](.*?)\[\/url\]/is',
function($match) use ($this) {
return $this->_link($match[1], $match[2]);
},
$text);Здесь три «лишних» элемента:
- Ключевое слово
function— многословно. - Явное указание
use ($this)— избыточно, потому что$thisнужен почти всегда. - Фигурные скобки и оператор
return— занимают строки, не добавляя смысла.
Это не ошибка, но в проектах с десятками подобных обработчиков такой стиль делает...
- Жалоба
Kotlin: Как вывести данные для проверки
При написании приложения может потребоваться проверить данные, как они были обработаны. Для этого, за частую, достаточно их просто увидеть. В этом нам поможет класс Gson. Чтобы его использовать, необходимо импортировать:
Если, по каким то причинам его у вас до сих пор нет, добавляем в "build.gradle.kts":
После чего, если потребуется, пересоберите проект. И выводите нужные данные так:
В лог выводим так:
Импорт логирования:
В логе увидите строку с данными.
...
ВыделитьKotlin
import android.util.LogЕсли, по каким то причинам его у вас до сих пор нет, добавляем в "build.gradle.kts":
ВыделитьKotlin
implementation("com.google.code.gson:gson:xx.xx.xx")xx.xx.xx: Указывайте актуальную версию.
После чего, если потребуется, пересоберите проект. И выводите нужные данные так:
ВыделитьKotlin
Gson().toJson(data)В лог выводим так:
ВыделитьKotlin
Log.d("Data", Gson().toJson(data))Импорт логирования:
ВыделитьKotlin
import android.util.LogВ логе увидите строку с данными.
...
SQL: Как создать индекс
Kotlin: Стандартные индикаторы загрузки
В Jetpack Compose есть несколько стандартных индикаторов загрузки:
Примеры их использования:
Дополнительные возможности настройки:
CircularProgressIndicator: Классический круговой индикатор.LinearProgressIndicator: Линейный индикатор.ActivityIndicator: Простой вращающийся индикатор.
Примеры их использования:
ВыделитьKotlin
// Круговой индикатор
CircularProgressIndicator(
modifier = Modifier
.size(40.dp)
.padding(16.dp),
color = MaterialTheme.colorScheme.primary
)
// Линейный индикатор
LinearProgressIndicator(
progress = 0.5f, // значение от 0 до 1
modifier = Modifier
.height(4.dp)
.fillMaxWidth()
.padding(16.dp)
)
// Простой индикатор активности
ActivityIndicator(
modifier = Modifier
.size(40.dp)
.padding(16.dp),
color = MaterialTheme.colorScheme.primary
)Дополнительные возможности настройки:
- Изменение размера через модификатор
size(). - Настройка цвета через параметр
color. - Анимация прогресса для
LinearProgressIndicator. - Стилизация через темы Material
Kotlin: Как получить часовой пояс устройства
В Kotlin можно получить часовой пояс пользователя несколькими способами.
Получение названия часового пояса
Получение смещения от UTC
...
Через TimeZone
ВыделитьKotlin
val timeZone = TimeZone.getDefault()
val timeZoneId = timeZone.id // например: "Europe/Moscow"
val offset = timeZone.rawOffset / (1000 * 60 * 60) // смещение в часахЧерез ZoneId (Рекомендуемый способ)
ВыделитьKotlin
import java.time.ZoneId
val zoneId = ZoneId.systemDefault()
val zoneIdString = zoneId.toString() // например: "Europe/Moscow"Через Calendar
ВыделитьKotlin
import java.util.Calendar
val calendar = Calendar.getInstance()
val timeZone = calendar.timeZone
val offset = timeZone.getRawOffset()Через LocalDateTime
import java.time.LocalDateTime
import java.time.ZoneId
val currentTime = LocalDateTime.now(ZoneId.systemDefault())Примеры использования
Получение названия часового пояса
ВыделитьKotlin
fun getUserTimeZone(): String {
return ZoneId.systemDefault().toString()
}Получение смещения от UTC
ВыделитьKotlin
fun getTimeZoneOffset(): Int {
val zone =
Реклама





