<?php
if (10 <= date("G") && date("G") <= 20) {
echo "сейчас на сервере от 10 до 20 часов.";
}
<?php
$commands = [
'hi' => fn($name) => 'hi, ' . $name,
'hello' => fn($name) => 'hello , ' . $name,
'etc' =>fn($name) => 'etc...',
];
echo $commands['hi']('John');
Минусы как бы очевидны:нет, не очевидны, по крайней мере миллионам разрабов
1 Код становится трудно читаем. По месту использования не всегда понятно что имеется ввиду под Order::load() - \Framework\Sale\Order::load или \Vendor\Project\Sale\Order::load - приходится проматывать к верху файла.Вам как разрабу должно быть в принципе фиолетово, какой из пакетов используется, если они соблюдают один интерфейс. Если не соблюдают, при том что называются одинаково, значит все пошло не так задолго до проблем с определением пакета...
2 Код становиться длиннее - там где было бы просто:Код становится длиннее в проектах где 2 контроллера и в них по 1 экшену. Там где Extension::load будет вызываться больше одного раза, очевидно экономия на эксплуатации клавиатуры заметно увеличивается. А в больших проектах создание объекта может (и будет) повторяться многократно.
\Framework\Main\UI\Extension::load([ 'vendor.module.components.cabinet.personal' ]);
приходится писать:
use \Framework\Main\UI\Extension;
Extension::load([ 'vendor.module.components.cabinet.personal' ]);
4 Код становиться замусоренным, так как верхушки файлов запросто превращаются во что-то вроде:Если не обращать внимание на отсутствие пункта 3, то... нет, не могу не обращать внимание, вот же торопыга....
И хрен его знает используются импортированные классы ниже ещё или уже нет, ведь никто не убирает этот мусор.Хрен не знает, а ИДЕ замечательно знает и даже подсвечивает серым цветом неиспользуемые.
for vote in votes:
означает, что переменной по имени vote поочерёдно будут присваиваться ссылки на значения элементов списка votes. ТОЧКА. Это не означает, что присвоив другое значение этой переменной, ты изменишь список. Присвоив что-то vote, ты заменишь ссылку внутри vote на другую, но и только.for index in range(len(votes)):
vote = votes[index]
x = vote.split(',')
votes[index] = x[0]+x[1]
for index, vote in enumerate(votes):
x = vote.split(',')
votes[index] = x[0]+x[1]
releaseSocket(releaseConnection(releaseRouter(json(get('/users',prepareRequest(createRouter(routerParams,connect(createSocket('TCP'),ip, port)))),users))))
$search = _string($_POST['search_string']);
$sql = '
SELECT *
FROM `chat`
WHERE `user_id` IN (
SELECT `id`
FROM `users`
WHERE `login` LIKE "'.$search.'%"
)
ORDER BY `time`
DESC '; // делаем запрос отдельной строкой,
var_dump($sql);
//вставив в него переменную убеждаемся что там ерунда
//пишем нормально
$search = $_POST['search_string'].'%';
$sql = '
SELECT *
FROM `chat`
WHERE `user_id` IN (
SELECT `id`
FROM `users`
WHERE `login` LIKE ?
)
ORDER BY `time`
DESC ';
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('s', $search);
$chat_result = $stmt->execute();
while ( $row = $chat_result->fetch_assoc() ) {
echo $row['user_id'].'<hr>';
}
$sql = "SELECT * FROM `shop` WHERE 1=1 "; // 1=1 - классическая заглушка, чтобы можно было удобно добавлять and.
$params = []; // заготовка под входные параметры запроса.
if(isset($_POST['criteria_1']) && $_POST['criteria_1'] == 'on') // выбрали нечто по первому критерию
{
// он проверяет только имя чего-то
$sql .= 'and `name` = :name ' // добавляем условие в текст запроса
$params['name'] = $_POST['name']; // добавляем параметры
}
if(isset($_POST['criteria_2']) && $_POST['criteria_2'] == 'on') // выбрали нечто по второму критерию
{
// он проверяет например, страну и город
$sql .= ' and `country` = :country
and `city` = :city ' // добавляем условие в текст запроса
$params['country'] = $_POST['country']; // добавляем параметры
$params['city'] = $_POST['city']; // добавляем параметры
}
$stmt = pdo()->prepare($sql);
$stmt->execute($params);
if ($stmt->rowCount() > 0) {
flash('Этот магазин уже существует.');
header('Location: addshop.php'); // Возврат на форму регистрации
die; // Остановка выполнения скрипта
}
будет ли использоваться индекс в запросе вида WHERE `field1` LIKE '_aa_a_'?
$stmt = $mysqli->prepare("UPDATE req
SET balance = balance - ?
WHERE card =? AND code = ? ;");
$stmt->bind_param("sss", $cost, $card, $code);
// set parameters and execute
$cost = $_GET['cost'];
$card = $_POST['card'];
$code = $_POST['code'];
$stmt->execute();