Меню

PHP

SimpleXLSXGen быстрый экспорт в XLSX

Запилил небольшой, но очень полезный класс для экспорта в Excel

SimpleXLSXGen

$books = [
    ['ISBN', 'title', 'author', 'publisher', 'ctry' ],
    [618260307, 'The Hobbit', 'J. R. R. Tolkien', 'Houghton Mifflin', 'USA'],
    [908606664, 'Slinky Malinki', 'Lynley Dodd', 'Mallinson Rendel', 'NZ']
];
$xlsx = SimpleXLSXGen::fromArray( $books );
$xlsx->saveAs('books.xlsx');

Создание Excel файлов в PHP ещё никогда не было таким простым.

REACT-MySQLi (ещё один)

MySQLi из коробки поддерживает асинхронные запросы, я написал ещё одну обёртку/адаптер под ReactPHP.

Репозиторий на GitHub

Установка

composer require shuchkin/react-mysqli

Пример

$loop = \React\EventLoop\Factory::create();

$db = \Shuchkin\ReactMySQLi\Client::connect($loop, 'localhost', 'root', '', 'my_db' );

$db->query('SELECT id,name,email FROM user')->then(
    function (\Shuchkin\ReactMySQLi\Result $result) {
        print_r( $result->all() ); // array
    },
    function ( \Exception $ex ) {
        trigger_error( $ex->getMessage() );
    }
);
$loop->run();

Отправляем почту в PHP в 2019 опубликовал Shuchkin\SimpleMail

$mail = new Shuchkin\SimpleMail();
$mail->setFrom('example@example.com')
	->setTo('sergey.shuchkin@gmail.com')
	->setSubject('Test SimpleMail')
	->setText('Hi, Sergey!')
	->send();

Возможности

  1. Сборка письма цепочкой вызовов
  2. Расширенная поддержка встроенной функции mail
  3. Встроенный SMTP клиент (TLS)
  4. Фабричные методы, один раз указали метод отправки и почту отправителя, а дальше отправляем через копию этого базового объекта
  5. Передача файлов
  6. UTF-8
  7. Свои заголовки
  8. Свой метод отправки
  9. Экспорт в массив или JSON
  10. Импорт из массива или JSON

Установка

Залит на GitHub, см. больше примеров

https://github.com/shuchkin/simplemail

И, конечно, на Packagist:

$ composer require shuchkin/simplemail

Асинхронная отправка почты PHP — react-smtp-client

Мне не хватало в ReactPHP простого инструмента для асинхронной отправки почты, так появился react-smtp-client

$loop = \React\EventLoop\Factory::create();

// у меня установлен postfix, в котором есть локальный smtp сервер
$smtp = new \Shuchkin\ReactSMTP\Client( $loop ); // localhost:25

$smtp->send('info@example.org', 'sergey.shuchkin@gmail.com', 'Test ReactPHP mailer', 'Hello, Sergey!')->then(
	function() {
		echo 'Message sent'.PHP_EOL;
	},
	function ( \Exception $ex ) {
		echo 'SMTP error '.$ex->getCode().' '.$ex->getMessage().PHP_EOL;
	}
);

$loop->run();

Получился аналог mail() для фреймворка ReactPHP. Можно подключаться хоть к GMail:

$smtp = new \Shuchkin\ReactSMTP\Client( $loop, 'tls://smtp.google.com:465', 'username@gmail.com','password' );

хоть к серверу Яндекс.Почты:

$smtp = new \Shuchkin\ReactSMTP\Client( $loop, 'tls://smtp.yandex.ru:465', 'username@yandex.ru', '**password**' );

Устанавливается через composer

composer require shuchkin/react-smtp-client

SimpleCSV читаем, пишем CSV

Продолжаю вносить посильный вклад в опенсорс.
Исходники PHP-библиотеки для чтения/записи CSV можно забрать на GitHub

if ( $csv = SimpleCSV::import('book.csv') ) {
	print_r( $csv );
}

Можно установить через Composer

$ composer require shuchkin/simplecsv