| 
					
				 | 
			
			
				@@ -0,0 +1,239 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |