Web МастерскаяБлог
Сообщество Web Мастеров. Тут собрано всё, чтобы написать свой первый сайт, запустить его в Интернет и поддерживать его в течении всей его работы.
Магический метод __call(): Вызов при недоступных методов
Магический метод
Мои два метода (
С решением этой задачи мне помог магический метод
...
__call() запускается при попытке обращения к несуществующему/недоступному методу:
public function __call($name, $arguments)
{
echo 'Метод: ' . $name . ' не найден.';
}Мои два метода (
installation и update) были похоже друг с другом, за исключением деталей, я решил их объединить, в один, при этом обращение к методам должно было остаться прежним:
$class->installation();
$class->update();С решением этой задачи мне помог магический метод
__call():
// Установка | Обновление
public function __call(string $name, array $arguments)
{
// Проверка: Если вызываемый метод не: installation, или не: update, то функция вернёт null
if (!in_array($name, ['installation', 'update']))
{
return null;
}
// Код функции
} // End: Установка | Обновление- Жалоба
PHP: Цикл в две колонки | В два столбика
Работая над одним приложением, потребовалось перечислить элементы массива в две колонки (Столбика):

Для решения этой задачи, у меня было два варианта. Первый:
И CSS к шаблону:
И второй:
Я выбрал первый вариант. Он мне показался лучшем, чем второй....

Для решения этой задачи, у меня было два варианта. Первый:
<?php foreach ($characteristics as $characteristic): ?>
<div class="feature">
<?php echo $this->lang()->phrase($characteristic['name']); ?>: <strong><?php echo $characteristic['info']; ?></strong>
</div>
<?php endforeach; ?>И CSS к шаблону:
.feature {
display: inline-block;
width: 48%;
}И второй:
<?php foreach ($characteristics as $key => $characteristic): ?>
<?php if ($key % 2): ?>
<div style="float: right;">
<?php else: ?>
<div style="float: left;">
<?php endif; ?>
<?php echo $this->lang()->phrase($characteristic['name']); ?>: <strong><?php echo $characteristic['info']; ?></strong>
</div>
<?php endforeach; ?>Я выбрал первый вариант. Он мне показался лучшем, чем второй....
PHP: Дробное число без округления
В PHP есть функции:
Бывает появляется необходимость работать с дробями, но не округляя их, а оставляя так, как есть. Нашёл такое решение:
Кстати: Блог: Call to undefined function bcdiv().
Ещё вариант:
...
round | ceil | floor, которые округляют дробные числа, в большую или меньшую сторону, в зависимости от функции и самого числа. Удобно, да не всегда...Бывает появляется необходимость работать с дробями, но не округляя их, а оставляя так, как есть. Нашёл такое решение:
$n = bcdiv('1762.789', 1, 2); // 1762.78Кстати: Блог: Call to undefined function bcdiv().
Ещё вариант:
$n = floor(12.399 * 100) / 100; // 12.39Call to undefined function bcdiv()
Для одной задачи, потребовалась функция:
В интернете найдено решение, выполнить команду:
Следует указать свою версию PHP....
bcdiv, но, при её использовании, получил ошибку: Uncaught Error: Call to undefined function bcdiv().В интернете найдено решение, выполнить команду:
sudo apt-get install php8.3-bcmathСледует указать свою версию PHP....
PHP: Как составить из строки элемент массива
Стояла задача, составить из получаемой строки элемент массива. Допустим, есть такой массив:
Функция принимает строку:
С решением помогли на Хабр:
Оказалось, всё просто! С каждой итерацией мы переходим к следующему "вложению" массива, подбираясь к нужному нам элементу.
Проверяем:
На экране видим:
А значит всё правильно.
Для решении мой задачи, так же, есть библиотека Array Dot Notation, но я выбрал решение выше....
$arr = [
'k1' => [
'k2' => [
'k3' => [
'k4' => 'v'
]
]
]
];Функция принимает строку:
k1/k2/k3, используя данную строку, необходимо отдать элемент массива: $arr['k1']['k2']['k3'].С решением помогли на Хабр:
<?php
$arr = [
'k1' => [
'k2' => [
'k3' => [
'k4' => 'v'
]
]
]
];
$s = "k1/k2/k3";
$array = explode('/', $s);
foreach ($array as $v)
{
$arr = $arr[$v];
}Оказалось, всё просто! С каждой итерацией мы переходим к следующему "вложению" массива, подбираясь к нужному нам элементу.
Проверяем:
print_r($arr);На экране видим:
['k4' => 'v']А значит всё правильно.
Для решении мой задачи, так же, есть библиотека Array Dot Notation, но я выбрал решение выше....
Категории
- Apache 6
- CMS 3
- CSS 16
- FTP 1
- HTML 11
- JavaScript 43
- MySQL 17
- Nginx 16
- PHP 51
- phpMyAdmin 2
- SVG 3
- URL 1
- XML 3
- Безопасность 7
- Библиотека JS 16
- Графика 3
- Доменное имя 1
- Инструкция 1
- Кодировка 2
- Контент 8
- Мнение 1
- Мобильное устройство 1
- Монетизация сайта 2
- Настройка 3
- Оптимизация 2
- Ошибка 10
- Поисковая система 1
- Продвижение сайта 6
- Производительность 1
- Софт 1
- Старт 2
- Сценарий 1
- Функция 1
- Хостинг | Сервер 3
Реклама















