php

php Передать переменную из родительской области видимости в анонимную функцию

Необходимо использовать в анонимной функции какую-то переменную из родительской области видимости.

Если просто использовать переменную внутри анонимной функции:

$example = function () {
    var_dump($message);
};
$example();

Возникает ошибка:

Undefined variable: message

Решение

Используйте слово use:

php Ошибка Неправильно обрабатывается переменная/вызов метода в двойных кавычках

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

$expr->lower("'%$request->get('name')%'")

у меня из $request->get('name') определилось только $request->get, и соответственно возникла ошибка

undefined property

Решение

Возьмите всю переменную (или вызов метода) в { }:

php Преобразование значения в логический (boolean) тип, что как и зачем

(в процессе)

Цитата из Стивена Хольцнера:

При преобразовании в логический тип boolean, следующие значения
преобразуются в значение FALSE (все остальные значения, включая все ресурсы,
преобразуются в TRUE):

php Добавляем процент к формату даты (перед буквами)

function addPercentToDateFormat($format)
{
	$percent_format = '';
	foreach (preg_split('//', $format, -1, PREG_SPLIT_NO_EMPTY) as $symbol) {
		if (ctype_alpha($symbol)) {
			$percent_format .= '%';
		}
		$percent_format .= ( $symbol == 'i' ) ? 'M' : $symbol;
	}
	return $percent_format;
}

Ajax-запрос -- бесконечно выполняющийся, дольше чем время выполнения скрипта на сервере (мистика)

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

При этом сама монга в диспетчере линукса (top) показывала, что занимает 300 процентов CPU, другие запросы к ней тоже выполнялись медленно до тех пор, пока процесс монги не был перезагружен.

yii2 mongodb $cursor->toArray Работает слишком медленно -- как ускорить выборку больших объёмов данных из mongo в проложение

Вызов типа:

$cursor = \Yii::$app->mongodb->createCommand(\Yii::$app->mongodb->getQueryBuilder()->aggregate(
		$collection->name, $pipeline, 
		['allowDiskUse' => true, 'cursor' => ['batchSize' => $this->batchSize]]))->execute();

$resultArray = $cursor->toArray();

-- практически все время при большой выборке потратит на вызов toArray(), и это будет проходить медленно.

Итерируемся сами

Можно итерироваться по курсору, без вызова toArray(), но даже пустая итерация типа:

php Кириллица пишется в базу в неправильной кодировке -- кракозябры (SQL pdo, русский текст не отображается)

Предположим, что вы отправляете форму с русскими буквами, а в базе у вас оказывается не пойми что.

Решать проблему следует так (везде нужна кодировка UTF-8):

php Автозагрузка классов по PSR-4 -- должен ли класс лежать во всех папках, перечисленных в пространстве имён. Объяснение правил

Базовые диретории и префиксы имён

На момент написания этой заметки настраивать автозагрузку следует по стандарту PSR4.

По вопросу из заголовка нас интересуют слова:

Последовательность подпространств имён, следующая за "префиксом пространства имён", соответствует поддиректории в "базовой директории". Разделители пространства имён соответствуют разделителям директорий. Имя поддиректории ДОЛЖНО иметь тот же регистр символов, что и имена подпространств имён.

[!] SimpleMVC -- пример простого учебного MVC фрэймворка и CMS построенной на его базе

[разработано для курса backend-программирования]

Здесь мы рассмотрим процесс создания (по факту устройста) простейшего MVC-фреймворка и напишем приложение на его базе.

Цели:

Pages

Subscribe to RSS - php