# Набор зависимостей для проекта, в котором: ### 1. Используется БД для хранения данных [illuminate/database](https://packagist.org/packages/illuminate/database) Пакет для работы с БД. В настоящее время поддерживаются MySQL, Postgres, SQL Server, SQLite. Создание объекта класса Capsule и инициализация этого объекта констанстами: ```php //php code use Illuminate\Database\Capsule\Manager as Capsule; $dotenv = new Dotenv\Dotenv('/.env'); $dotenv->load(); $capsule = new Capsule; $capsule->addConnection([ 'driver' => getenv(DB_CONNECTION), 'host' => getenv(DB_HOST), 'database' => getenv(DB_DATABASE), 'username' => getenv(DB_USERNAME), 'password' => getenv(DB_PASSWORD), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]); // Установка ORM Eloquent $capsule->bootEloquent(); } ``` Использование ORM Eloquent: ```php //php code class User extends Illuminate\Database\Eloquent\Model {} $users = User::where('verified', '=', TRUE)->get(); ``` ### 2. Используется кеш в памяти для временного хранения сложных запросов к БД [watson/rememberable](https://packagist.org/packages/watson/rememberable) Кэширование запросов для Laravel. Результаты запросов кэшируются в течение заданного промежутка времени. Получить статьи первого пользователя и запомнить их на 6 часов : ```php //php code User::first()->remember(360)->posts()->get(); ``` ### 3. Формируются XLS-отчеты на основе данных [phpoffice/phpspreadsheet](https://packagist.org/packages/phpoffice/phpspreadsheet) Библиотека предоставляющая набор классов для чтения и записи различных форматов файлов электронных таблиц. ### 4. Формируются PDF-документы на основе данных [tecnickcom/tcpdf](https://packagist.org/packages/tecnickcom/tcpdf) PHP библиотека для генерации PDF документов ### 5. Отправляются SMS-сообщения для верификации пользователей [symfony/mailer](https://packagist.org/packages/symfony/mailer) PHP обетка для API Twilio. Отправка sms: ```php // php code // Required if your environment does not handle autoloading require __DIR__ . '/vendor/autoload.php'; // Use the REST API Client to make requests to the Twilio REST API use Twilio\Rest\Client; // Your Account SID and Auth Token from twilio.com/console $sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; $token = 'your_auth_token'; $client = new Client($sid, $token); // Use the client to do fun stuff like send text messages! $client->messages->create( // the number you'd like to send the message to '+15558675309', [ // A Twilio phone number you purchased at twilio.com/console 'from' => '+15017250604', // the body of the text message you'd like to send 'body' => 'Hey Jenny! Good luck on the bar exam!' ] ); ``` ### 6. Отправляются E-mail-уведомления и рассылки для пользователей [swiftmailer/swiftmailer](https://packagist.org/packages/swiftmailer/swiftmailer) Библиотека для отправки электронных сообщений. Пример отправки сообщения: ```php require_once '/path/to/vendor/autoload.php'; $transport = (new Swift_SmtpTransport('smtp.hostname', 25)) ->setUsername('username') ->setPassword('password') ; $mailer = new Swift_Mailer($transport); $message = (new Swift_Message('Wonderful Subject')) ->setFrom(['john@doe.com' => 'John Doe']) ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name']) ->setBody('Here is the message itself') ; $result = $mailer->send($message); ``` ### 7. Используется облачное хранилище AWS S3 или Windows Azure Blob для статичных файлов [aws/aws-sdk-php](https://packagist.org/packages/aws/aws-sdk-php) Пакет для создание php-приложений с использованием сервисов Amazon (Amazon S3, Amazon DynamoDB, Amazon Glacier) ```php // php code require 'vendor/autoload.php'; use Aws\S3\S3Client; // Настройка клиента для S3, указание региона и последней версии $s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // Отправка запроса PutObject $s3Client->putObject([ 'Bucket' => 'bucket', 'Key' => 'key', 'Body' => 'body' ]); // Загрузка объекта $result = $s3Client->getObject([ 'Bucket' => 'bucket', 'Key' => 'key' ]); // Удаление контейнера $client->deleteBucket([ 'Bucket' => 'test-bucket', ]); ``` ### 8. Используется интеграция со службой доставки для расчета стоимости (например, PickPoint или Почта России) [domatskiy/pickpoint](https://packagist.org/packages/domatskiy/pickpoint) PickPoint API ### 9. Используется интеграция с социальными сетями для авторизации пользователей [hybridauth/hybridauth](https://packagist.org/packages/hybridauth/hybridauth) PHP библиотека для интеграции с социальными сетями. Возможна авторизация на сойте через Facebook, Twitter и Google. Аутентификация с помощью GitHub: ```php // php code include 'vendor/autoload.php'; $config = [ 'callback' => 'https://example.com/path/to/script.php', 'keys' => [ 'id' => 'your-app-id', 'secret' => 'your-app-secret' ] ]; $github = new Hybridauth\Provider\GitHub($config); $github->authenticate(); $userProfile = $github->getUserProfile(); ``` ### 10. Данные о товарах регулярно отправляются в Яндекс.Маркет [yandex-market/yandex-market-php-partner](https://packagist.org/packages/yandex-market/yandex-market-php-partner) Партнерский API Яндекс.Маркета ### 11. Принимается онлайн-оплата от покупателей [trustly/trustly-client-php](https://packagist.org/packages/trustly/trustly-client-php) Релизация онлайн-платежей. ### 12. Применяются средства тестирования (например, PHPUnit) [phpunit/phpunit](https://packagist.org/packages/phpunit/phpunit) PHP фреймворк для модульного тестирования. ```php use PHPUnit\Framework\TestCase; class StackTest extends TestCase { public function testPushAndPop() { $stack = []; $this->assertSame(0, count($stack)); array_push($stack, 'foo'); $this->assertSame('foo', $stack[count($stack)-1]); $this->assertSame(1, count($stack)); $this->assertSame('foo', array_pop($stack)); $this->assertSame(0, count($stack)); } } ```