PHP
Hello World в PHPUnit
Документация к PHPUnit предполагает очень серьезное использование с самого начала, да и предполагаемые методы установки могут напугать. Иногда лучше начинать работать с чего-то попроще, поэтому вот пример использования: Установить PHPUnit в Ubuntu несложно: sudo apt install phpunit Как мне кажется, для функций и методов в качестве Hello World часто используется умножение, вот и у нас […]
Интерполяция переменных в PHP
Если строку обернуть в двойные кавычки “”, ПХП сам подставит значения встреченных переменных. В других языках этого, почему-то, обычно нет. Для этого надо указать переменную в строке просто так, или в фигурных скобках, что удобно для ассоциативных массивов и других сложных случаях. “текст $var”; “текст $var[3]”; “текст $foo[key]”; //ключ без кавычек, именно “текст {$foo[‘key’]}”; //а […]
Скрыть категорию из “Свежие записи” в WordPress
Что скрыть категорию (рубрику) в виджете “Свежие записи”, надо добавить следующую функцию в functions.php (если тема не будет обновляться). function filterCategory($categories) { $categories[“cat”] = “-346”; return $categories; } add_filter(“widget_posts_args”, “filterCategory”); ID нужной категории можно найти в адресе страницы категории, будет в виде term.php?taxonomy=category&tag_ID=210. И ее с “-” впереди добавить. Наверное будет работать если сразу несколько, […]
Критичные ошибки в PHP, fatal errors
PHP Fatal error: Cannot redeclare class Это значит данный класс уже объявлялся ранее. Самое простое это включать файлы с классами как include_once()/require_once(). Если не помогает, то можно проверять наличие класса: if (class_exists(“Database”) == false) { class Database { … } }
PHP Parse error
Тут буду собирать php parsing errors. syntax error, unexpected '' PHP Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) Это значит PHP не нравится интерполировать элементы массива с ключами в одиночных кавычках. $foo = “upupu $issue[‘article’]” // плохо $foo = “upupu {$issue[‘article’]}” // хорошо
Перенаправления в PHP
Всякие 301 редиректы лучше редиректить через .htaccess, оно так эффективнее. Но если надо перенаправить в PHP, то это вроде несложно: header(“Location: /foo/tuda/”); exit; Редиректы на 404 немного по-другому: header(“HTTP/1.1 404 Not Found”); include(“/404.php”); exit; exit нужен, без него выходит какое-то дерьмо.
Строгий режим в PHP, PHP Notice
error_reporting(-1); позволяет PHP писать в лог о всех мелочах, наподобие аналогичным use warnings; или “use strict”;. Вот какие сообщения я уже получал: PHP Notice: Use of undefined constant Так ПХП требует кавычки вокруг ключей в ассоциативных массивах. Ключ это строка, а строки должны быть в кавычках: $_GET[n]; // плохо $_GET[“n”]; // хорошо PHP Notice: Undefined […]
Простое ведение логов в PHP
Чтобы не сильно заморачиваясь вести логи каких-нибудь событий, часто хватает простого error_log(). И не нужно морочиться с записью в файлы и базы данных. Формат очень свободный, поэтому даты и переносов строк не будет, все самому. error_log(date(“c”) . ” cookies eggog\n”, 3, “/var/dataLogs/loginLog.log”); Файл создастся сам. Также можно писать и в общий error_log, с параметром 0: […]
PDO prepated statements и кириллица
Как-то я бугнул и в названии колонки таблицы в MySQL (на самом деле Percona Server) появилась буква с. Буква кириллицей, из названия колонки расплодилась в соответствующие переменные PHP и параметры PDO (копипаста вперде!). Все участники спокойно пережевывали слово Сorrelation, пока execute() не порадовал меня ошибкой в параметре: PHP Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter […]
Включить HTML файл в HTML файл
Напрямую инклюдить HTML в HTML нельзя. Возможно в полуреализованных спецификациях уже есть различные наработки на эту тему, однако они с заморочками и результат скорее походит на страницу внутри страницы. А гладкое бесшовное включение, как какой-нибудь include или require нам в чистом HTML не получить. PHP include требует расширения .php и все равно чистый HTML инклюдить […]