|
@@ -1,7 +1,8 @@
|
|
-1. Используется БД для хранения данных.
|
|
|
|
|
|
+### 1. Используется БД для хранения данных.
|
|
"illuminate/database": "^9.32"
|
|
"illuminate/database": "^9.32"
|
|
Создание объекта Capsule для установки соединения с БД:
|
|
Создание объекта Capsule для установки соединения с БД:
|
|
|
|
|
|
|
|
+```php
|
|
$capsule = new Capsule;
|
|
$capsule = new Capsule;
|
|
$capsule->addConnection([
|
|
$capsule->addConnection([
|
|
'driver' => 'mysql',
|
|
'driver' => 'mysql',
|
|
@@ -13,29 +14,31 @@ $capsule->addConnection([
|
|
'collation' => 'utf8_unicode_ci',
|
|
'collation' => 'utf8_unicode_ci',
|
|
'prefix' => '',
|
|
'prefix' => '',
|
|
]);
|
|
]);
|
|
|
|
+```
|
|
|
|
|
|
-
|
|
|
|
-2. Используется кеш в памяти для временного хранения сложных запросов к БД.
|
|
|
|
|
|
+### 2. Используется кеш в памяти для временного хранения сложных запросов к БД.
|
|
"watson/rememberable": "^6.0"
|
|
"watson/rememberable": "^6.0"
|
|
Сохранение статьи первого пользователя на 6 часов (360 минут):
|
|
Сохранение статьи первого пользователя на 6 часов (360 минут):
|
|
|
|
|
|
|
|
+```php
|
|
User::first()->remember(360)->posts()->get();
|
|
User::first()->remember(360)->posts()->get();
|
|
|
|
+```
|
|
|
|
|
|
-
|
|
|
|
-3. Формируются XLS-отчеты на основе данных.
|
|
|
|
|
|
+### 3. Формируются XLS-отчеты на основе данных.
|
|
"phpoffice/phpspreadsheet": "^1.25"
|
|
"phpoffice/phpspreadsheet": "^1.25"
|
|
Чтение и запись электронных таблиц в разных форматах.
|
|
Чтение и запись электронных таблиц в разных форматах.
|
|
|
|
|
|
|
|
|
|
-4. Формируются PDF-документы на основе данных.
|
|
|
|
|
|
+### 4. Формируются PDF-документы на основе данных.
|
|
"tecnickcom/tcpdf": "^6.5"
|
|
"tecnickcom/tcpdf": "^6.5"
|
|
Генерация PDF-документов.
|
|
Генерация PDF-документов.
|
|
|
|
|
|
|
|
|
|
-5. Отправляются SMS-сообщения для верификации пользователей.
|
|
|
|
|
|
+### 5. Отправляются SMS-сообщения для верификации пользователей.
|
|
"symfony/mailer": "^6.1"
|
|
"symfony/mailer": "^6.1"
|
|
Отправляет SMS через API Twilio:
|
|
Отправляет SMS через API Twilio:
|
|
|
|
|
|
|
|
+```php
|
|
// Your Account SID and Auth Token from twilio.com/console
|
|
// Your Account SID and Auth Token from twilio.com/console
|
|
$sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
|
|
$sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
|
|
$token = 'your_auth_token';
|
|
$token = 'your_auth_token';
|
|
@@ -52,15 +55,16 @@ $client->messages->create(
|
|
'body' => 'Hey Jenny! Good luck on the bar exam!'
|
|
'body' => 'Hey Jenny! Good luck on the bar exam!'
|
|
]
|
|
]
|
|
);
|
|
);
|
|
|
|
+```
|
|
|
|
|
|
-
|
|
|
|
-6. Отправляются E-mail-уведомления и рассылки для пользователей.
|
|
|
|
|
|
+### 6. Отправляются E-mail-уведомления и рассылки для пользователей.
|
|
|
|
|
|
|
|
|
|
-7. Используется облачное хранилище AWS S3 или Windows Azure Blob для статичных файлов.
|
|
|
|
|
|
+### 7. Используется облачное хранилище AWS S3 или Windows Azure Blob для статичных файлов.
|
|
"aws/aws-sdk-php": "^3.237"
|
|
"aws/aws-sdk-php": "^3.237"
|
|
Подключает к проекту сервисы Amazon:
|
|
Подключает к проекту сервисы Amazon:
|
|
|
|
|
|
|
|
+```php
|
|
// Настройка клиента для S3, указание региона и последней версии
|
|
// Настройка клиента для S3, указание региона и последней версии
|
|
$s3 = new Aws\S3\S3Client([
|
|
$s3 = new Aws\S3\S3Client([
|
|
'version' => 'latest',
|
|
'version' => 'latest',
|
|
@@ -77,12 +81,13 @@ $result = $s3Client->getObject([
|
|
'Bucket' => 'bucket',
|
|
'Bucket' => 'bucket',
|
|
'Key' => 'key'
|
|
'Key' => 'key'
|
|
]);
|
|
]);
|
|
|
|
+```
|
|
|
|
|
|
-
|
|
|
|
-8. Используется интеграция со службой доставки для расчета стоимости (например, PickPoint или Почта России)
|
|
|
|
|
|
+### 8. Используется интеграция со службой доставки для расчета стоимости (например, PickPoint или Почта России)
|
|
"sch-group/pickpoint": "^4.2"
|
|
"sch-group/pickpoint": "^4.2"
|
|
Обращается к PickPoint:
|
|
Обращается к PickPoint:
|
|
|
|
|
|
|
|
+```php
|
|
$config = [
|
|
$config = [
|
|
'host' => '',
|
|
'host' => '',
|
|
'login' => '',
|
|
'login' => '',
|
|
@@ -94,11 +99,12 @@ $pickPointConf = new PickPointConf($config['host'], $config['login'], $config['p
|
|
$defaultPackageSize = new PackageSize(20, 20,20); // может быть null
|
|
$defaultPackageSize = new PackageSize(20, 20,20); // может быть null
|
|
$senderDestination = new SenderDestination('Москва', 'Московская обл.'); // Адрес отправителя
|
|
$senderDestination = new SenderDestination('Москва', 'Московская обл.'); // Адрес отправителя
|
|
$client = new PickPointConnector($pickPointConf, $senderDestination, $defaultPackageSize);
|
|
$client = new PickPointConnector($pickPointConf, $senderDestination, $defaultPackageSize);
|
|
-
|
|
|
|
|
|
+```
|
|
|
|
|
|
"lapaygroup/russianpost": "*"
|
|
"lapaygroup/russianpost": "*"
|
|
Обращается к Почте России:
|
|
Обращается к Почте России:
|
|
|
|
|
|
|
|
+```php
|
|
$objectId = 2020; // Письмо с объявленной ценностью
|
|
$objectId = 2020; // Письмо с объявленной ценностью
|
|
// Минимальный набор параметров для расчета стоимости отправления
|
|
// Минимальный набор параметров для расчета стоимости отправления
|
|
$params = [
|
|
$params = [
|
|
@@ -114,12 +120,13 @@ $services = [2,21];
|
|
|
|
|
|
$TariffCalculation = new \LapayGroup\RussianPost\TariffCalculation();
|
|
$TariffCalculation = new \LapayGroup\RussianPost\TariffCalculation();
|
|
$calcInfo = $TariffCalculation->calculate($objectId, $params, $services);
|
|
$calcInfo = $TariffCalculation->calculate($objectId, $params, $services);
|
|
|
|
+```
|
|
|
|
|
|
-
|
|
|
|
-9. Используется интеграция с социальными сетями для авторизации пользователей.
|
|
|
|
|
|
+### 9. Используется интеграция с социальными сетями для авторизации пользователей.
|
|
"hybridauth/hybridauth": "^3.8"
|
|
"hybridauth/hybridauth": "^3.8"
|
|
Пакет для интеграции Facebook, Twitter, Google и т.д. Аутентификация через GitHub:
|
|
Пакет для интеграции Facebook, Twitter, Google и т.д. Аутентификация через GitHub:
|
|
|
|
|
|
|
|
+```php
|
|
$config = [
|
|
$config = [
|
|
'callback' => 'https://example.com/path/to/script.php',
|
|
'callback' => 'https://example.com/path/to/script.php',
|
|
'keys' => [ 'id' => 'your-app-id', 'secret' => 'your-app-secret' ]
|
|
'keys' => [ 'id' => 'your-app-id', 'secret' => 'your-app-secret' ]
|
|
@@ -127,12 +134,13 @@ $config = [
|
|
$github = new Hybridauth\Provider\GitHub($config);
|
|
$github = new Hybridauth\Provider\GitHub($config);
|
|
$github->authenticate();
|
|
$github->authenticate();
|
|
$userProfile = $github->getUserProfile();
|
|
$userProfile = $github->getUserProfile();
|
|
|
|
+```
|
|
|
|
|
|
-
|
|
|
|
-10. Данные о товарах регулярно отправляются в Яндекс.Маркет.
|
|
|
|
|
|
+### 10. Данные о товарах регулярно отправляются в Яндекс.Маркет.
|
|
"yandex-market/yandex-market-php-partner": "^2.4"
|
|
"yandex-market/yandex-market-php-partner": "^2.4"
|
|
Подключение API Яндекс.Маркета:
|
|
Подключение API Яндекс.Маркета:
|
|
|
|
|
|
|
|
+```php
|
|
// Указываем авторизационные данные
|
|
// Указываем авторизационные данные
|
|
$clientId = '9876543210fedcbaabcdef0123456789';
|
|
$clientId = '9876543210fedcbaabcdef0123456789';
|
|
$token = '01234567-89ab-cdef-fedc-ba9876543210';
|
|
$token = '01234567-89ab-cdef-fedc-ba9876543210';
|
|
@@ -167,12 +175,13 @@ do {
|
|
// когда вернется количество страниц, равное номеру текущей страницы
|
|
// когда вернется количество страниц, равное номеру текущей страницы
|
|
$campaignsTotalPages = $campaignsObject->getPager()->getPagesCount();
|
|
$campaignsTotalPages = $campaignsObject->getPager()->getPagesCount();
|
|
} while ($pageNumber != $campaignsTotalPages);
|
|
} while ($pageNumber != $campaignsTotalPages);
|
|
|
|
+```
|
|
|
|
|
|
-
|
|
|
|
-11. Принимается онлайн-оплата от покупателей.
|
|
|
|
|
|
+### 11. Принимается онлайн-оплата от покупателей.
|
|
"trustly/trustly-client-php": "^2021.1"
|
|
"trustly/trustly-client-php": "^2021.1"
|
|
Подключение онлайн-платежей:
|
|
Подключение онлайн-платежей:
|
|
|
|
|
|
|
|
+```php
|
|
/* Change 'test.trustly.com' to 'trustly.com' below to use the live environment */
|
|
/* Change 'test.trustly.com' to 'trustly.com' below to use the live environment */
|
|
$api = new Trustly_Api_Signed(
|
|
$api = new Trustly_Api_Signed(
|
|
$trustly_rsa_private_key,
|
|
$trustly_rsa_private_key,
|
|
@@ -218,12 +227,13 @@ Example notification processing
|
|
$request = $api->handleNotification($notification_body);
|
|
$request = $api->handleNotification($notification_body);
|
|
# FIXME Handle the incoming notification data here
|
|
# FIXME Handle the incoming notification data here
|
|
$notifyresponse = $api->notificationResponse($request, TRUE);
|
|
$notifyresponse = $api->notificationResponse($request, TRUE);
|
|
|
|
+```
|
|
|
|
|
|
-
|
|
|
|
-12. Применяются средства тестирования (например, PHPUnit).
|
|
|
|
|
|
+### 12. Применяются средства тестирования (например, PHPUnit).
|
|
"phpunit/phpunit": "^9.5"
|
|
"phpunit/phpunit": "^9.5"
|
|
Объект для модульного тестирования:
|
|
Объект для модульного тестирования:
|
|
|
|
|
|
|
|
+```php
|
|
class StackTest extends TestCase
|
|
class StackTest extends TestCase
|
|
{
|
|
{
|
|
public function testPushAndPop()
|
|
public function testPushAndPop()
|
|
@@ -236,4 +246,5 @@ class StackTest extends TestCase
|
|
$this->assertSame('foo', array_pop($stack));
|
|
$this->assertSame('foo', array_pop($stack));
|
|
$this->assertSame(0, count($stack));
|
|
$this->assertSame(0, count($stack));
|
|
}
|
|
}
|
|
-}
|
|
|
|
|
|
+}
|
|
|
|
+```
|