123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- 1. Используется БД для хранения данных.
- "illuminate/database": "^9.32"
- Создание объекта Capsule для установки соединения с БД:
- $capsule = new Capsule;
- $capsule->addConnection([
- 'driver' => 'mysql',
- 'host' => 'localhost',
- 'database' => 'database',
- 'username' => 'root',
- 'password' => 'password',
- 'charset' => 'utf8',
- 'collation' => 'utf8_unicode_ci',
- 'prefix' => '',
- ]);
- 2. Используется кеш в памяти для временного хранения сложных запросов к БД.
- "watson/rememberable": "^6.0"
- Сохранение статьи первого пользователя на 6 часов (360 минут):
- User::first()->remember(360)->posts()->get();
- 3. Формируются XLS-отчеты на основе данных.
- "phpoffice/phpspreadsheet": "^1.25"
- Чтение и запись электронных таблиц в разных форматах.
- 4. Формируются PDF-документы на основе данных.
- "tecnickcom/tcpdf": "^6.5"
- Генерация PDF-документов.
- 5. Отправляются SMS-сообщения для верификации пользователей.
- "symfony/mailer": "^6.1"
- Отправляет SMS через API Twilio:
- // 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-уведомления и рассылки для пользователей.
- 7. Используется облачное хранилище AWS S3 или Windows Azure Blob для статичных файлов.
- "aws/aws-sdk-php": "^3.237"
- Подключает к проекту сервисы Amazon:
- // Настройка клиента для 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'
- ]);
- 8. Используется интеграция со службой доставки для расчета стоимости (например, PickPoint или Почта России)
- "sch-group/pickpoint": "^4.2"
- Обращается к PickPoint:
- $config = [
- 'host' => '',
- 'login' => '',
- 'password' => '',
- 'ikn' => '',
- ];
- $pickPointConf = new PickPointConf($config['host'], $config['login'], $config['password'], $config['ikn']);
- $defaultPackageSize = new PackageSize(20, 20,20); // может быть null
- $senderDestination = new SenderDestination('Москва', 'Московская обл.'); // Адрес отправителя
- $client = new PickPointConnector($pickPointConf, $senderDestination, $defaultPackageSize);
- "lapaygroup/russianpost": "*"
- Обращается к Почте России:
- $objectId = 2020; // Письмо с объявленной ценностью
- // Минимальный набор параметров для расчета стоимости отправления
- $params = [
- 'weight' => 20, // Вес в граммах
- 'sumoc' => 10000, // Сумма объявленной ценности в копейках
- 'from' => 109012 // Почтовый индекс места отправления
- ];
- // Список ID дополнительных услуг
- // 2 - Заказное уведомление о вручении
- // 21 - СМС-уведомление о вручении
- $services = [2,21];
- $TariffCalculation = new \LapayGroup\RussianPost\TariffCalculation();
- $calcInfo = $TariffCalculation->calculate($objectId, $params, $services);
- 9. Используется интеграция с социальными сетями для авторизации пользователей.
- "hybridauth/hybridauth": "^3.8"
- Пакет для интеграции Facebook, Twitter, Google и т.д. Аутентификация через GitHub:
- $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": "^2.4"
- Подключение API Яндекс.Маркета:
- // Указываем авторизационные данные
- $clientId = '9876543210fedcbaabcdef0123456789';
- $token = '01234567-89ab-cdef-fedc-ba9876543210';
- // Создаем экземпляр клиента с базовыми методами
- $baseClient = new \Yandex\Market\Partner\Clients\BaseClient($clientId, $token);
- // Магазины возвращаются постранично
- $pageNumber = 0;
- do {
- $pageNumber++;
-
- // Получаем страницу магазинов с номером pageNumber
- $campaignsObject = $baseClient->getCampaigns(['page' => $pageNumber,]);
- // Получаем итератор по магазинам на странице
- $campaignsPage = $campaignsObject->getCampaigns();
- // Получаем количество магазинов на странице
- $campaignsCount = $campaignsPage->count();
- // Получаем первый магазин
- $campaign = $campaignsPage->current();
- // Печатаем идентификатор и URL магазина, затем переходим к следующему
- for ($i = 0; $i < $campaignsCount; $i++) {
- echo 'ID: ' . $campaign->getId();
- echo 'Domain: ' . $campaign->getDomain();
- $campaign = $campaignsPage->next();
- }
-
- // Получаем информацию о страницах. Возвращаемое количество страниц может увеличиваться
- // по мере увеличения номера страницы. Последняя страница будет достигнута,
- // когда вернется количество страниц, равное номеру текущей страницы
- $campaignsTotalPages = $campaignsObject->getPager()->getPagesCount();
- } while ($pageNumber != $campaignsTotalPages);
- 11. Принимается онлайн-оплата от покупателей.
- "trustly/trustly-client-php": "^2021.1"
- Подключение онлайн-платежей:
- /* Change 'test.trustly.com' to 'trustly.com' below to use the live environment */
- $api = new Trustly_Api_Signed(
- $trustly_rsa_private_key,
- $trustly_username,
- $trustly_password,
- 'test.trustly.com'
- );
- $deposit = $api->deposit(
- "$base_url/php/example.php/notification", /* NotificationURL */
- 'john.doe@example.com', /* EndUserID */
- $messageid, /* MessageID */
- 'en_US', /* Locale */
- $amount, /* Amount */
- $currency, /* Currency */
- 'SE', /* Country */
- NULL, /* MobilePhone */
- 'Sam', /* FirstName */
- 'Trautman', /* LastName */
- NULL, /* NationalIdentificationNumber */
- NULL, /* ShopperStatement */
- $ip, /* IP */
- "$base_url/success.html", /* SuccessURL */
- "$base_url/fail.html", /* FailURL */
- NULL, /* TemplateURL */
- NULL, /* URLTarget */
- NULL, /* SuggestedMinAmount */
- NULL, /* SuggestedMaxAmount */
- 'trustly-client-php example/1.0' /* IntegrationModule */
- FALSE, /* HoldNotifications */
- 'john.doe@example.com', /* Email */
- 'SE', /* ShippingAddressCountry */
- '12345', /* ShippingAddressPostalCode */
- 'ExampleCity', /* ShippingAddressCity */
- '123 Main St' /* ShippingAddressLine1 */
- 'C/O Careholder', /* ShippingAddressLine2 */
- NULL /* ShippingAddress */
- );
- $iframe_url= $deposit->getData('url');
- Example notification processing
- $request = $api->handleNotification($notification_body);
- # FIXME Handle the incoming notification data here
- $notifyresponse = $api->notificationResponse($request, TRUE);
- 12. Применяются средства тестирования (например, PHPUnit).
- "phpunit/phpunit": "^9.5"
- Объект для модульного тестирования:
- 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));
- }
- }
|