Compare commits

..

3 Commits

Author SHA1 Message Date
930a4b6772 Use HttpFoundation 2026-01-04 20:15:05 +01:00
b3b1718d62 gitignore vendor 2026-01-04 19:55:27 +01:00
42bca8c7d8 phpunit 2026-01-04 18:16:27 +01:00
7 changed files with 229 additions and 2 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
vendor

View File

@ -0,0 +1 @@
{"version":2,"defects":{"IndexTest::testHelloNoParam":5},"times":{"IndexTest::testHello":0.014,"IndexTest::testHelloNoParam":0}}

5
composer.json Normal file
View File

@ -0,0 +1,5 @@
{
"require": {
"symfony/http-foundation": "^8.0"
}
}

179
composer.lock generated Normal file
View File

@ -0,0 +1,179 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "1222a9af69e0a2f38e6b12506a7c3ad3",
"packages": [
{
"name": "symfony/http-foundation",
"version": "v8.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "514ec3aa7982f296b0ad0825f75b6be5779ae9e7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/514ec3aa7982f296b0ad0825f75b6be5779ae9e7",
"reference": "514ec3aa7982f296b0ad0825f75b6be5779ae9e7",
"shasum": ""
},
"require": {
"php": ">=8.4",
"symfony/polyfill-mbstring": "^1.1"
},
"conflict": {
"doctrine/dbal": "<4.3"
},
"require-dev": {
"doctrine/dbal": "^4.3",
"predis/predis": "^1.1|^2.0",
"symfony/cache": "^7.4|^8.0",
"symfony/clock": "^7.4|^8.0",
"symfony/dependency-injection": "^7.4|^8.0",
"symfony/expression-language": "^7.4|^8.0",
"symfony/http-kernel": "^7.4|^8.0",
"symfony/mime": "^7.4|^8.0",
"symfony/rate-limiter": "^7.4|^8.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\HttpFoundation\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-foundation/tree/v8.0.3"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2025-12-23T14:52:06+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"provide": {
"ext-mbstring": "*"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-09-09T11:45:10+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {},
"prefer-stable": false,
"prefer-lowest": false,
"platform": {},
"platform-dev": {},
"plugin-api-version": "2.9.0"
}

View File

@ -1,5 +1,14 @@
<?php
$name = $_GET['name'] ?? 'poopstink';
require_once __DIR__.'/vendor/autoload.php';
printf('Hello %s', $name);
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
$request = Request::createFromGlobals();
$name = $request->query->get('name', 'Dingo');
$response = new Response(sprintf('Hello %s', htmlspecialchars($name, ENT_QUOTES, 'UTF-8')));
$response->send();

4
phpunit.xml Normal file
View File

@ -0,0 +1,4 @@
<phpunit
cacheDirectory=".phpunit-cache"
>
</phpunit>

27
test.php Normal file
View File

@ -0,0 +1,27 @@
<?php
use PHPUnit\Framework\TestCase;
class IndexTest extends TestCase
{
public function testHello(): void
{
$_GET['name'] = 'Poopiebutt';
ob_start();
include 'index.php';
$content = ob_get_clean();
$this->assertEquals('Hello Poopiebutt', $content);
}
public function testHelloNoParam(): void
{
unset($_GET['name']);
ob_start();
include 'index.php';
$content = ob_get_clean();
$this->assertEquals('Hello Dingo', $content);
}
}