|
@@ -1,2 +1,198 @@
|
|
|
-# Homework
|
|
|
+# Набор зависимостей для проекта, в котором:
|
|
|
|
|
|
+### 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));
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|