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