├── .github ├── dependabot.yml └── workflows │ ├── ci-bluecadet.yaml │ ├── ci-env.yaml │ ├── ci-no-output.yaml │ ├── ci-show-output-log.yml │ ├── ci.yaml │ ├── composer-v4.yml │ ├── dump-autoloader.yaml │ └── validate.yaml ├── README.md ├── composer.json ├── composer.lock └── src └── Debug.php /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # Keep GitHub Actions up to date with GitHub's Dependabot... 2 | # https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot 3 | # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#package-ecosystem 4 | version: 2 5 | updates: 6 | - package-ecosystem: github-actions 7 | directory: / 8 | groups: 9 | github-actions: 10 | patterns: 11 | - "*" # Group all Actions updates into a single larger pull request 12 | schedule: 13 | interval: weekly 14 | -------------------------------------------------------------------------------- /.github/workflows/ci-bluecadet.yaml: -------------------------------------------------------------------------------- 1 | name: CI-patch 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build-test: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v3 11 | 12 | - name: Install dependencies 13 | uses: php-actions/composer@bluecadet 14 | 15 | with: 16 | php_version: '8.1' 17 | ssh_key: ${{ secrets.SSH_KEY }} 18 | ssh_key_pub: ${{ secrets.SSH_KEY_PUB }} 19 | 20 | - uses: actions/upload-artifact@v3 21 | with: 22 | name: debug-output 23 | path: output.log 24 | -------------------------------------------------------------------------------- /.github/workflows/ci-env.yaml: -------------------------------------------------------------------------------- 1 | name: CI-environment-variables 2 | # This tests whether environment variables are loaded correctly within the 3 | # Docker container. The example sets the COMPOSER_PROCESS_TIMEOUT variable 4 | # (which has a default of 300), and changes the command to "config" with args 5 | # "process-timeout", which will show the value of the associated config setting.defaults: 6 | # If the environment variables are loaded, the script should output 1. If they 7 | # are ignored, it should output 300. 8 | 9 | on: [push] 10 | 11 | jobs: 12 | build-test: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - uses: actions/checkout@v3 17 | 18 | - name: Show environment variables 19 | uses: php-actions/composer@master 20 | with: 21 | php_version: 8.1 22 | ssh_key: ${{ secrets.SSH_KEY }} 23 | ssh_key_pub: ${{ secrets.SSH_KEY_PUB }} 24 | command: run-script 25 | args: env-test 26 | 27 | env: 28 | EXAMPLE_ENVIRONMENT_VARIABLE: "This tests issue php-actions/composer#40" 29 | ANOTHER_EXAMPLE: "Here is another value" 30 | -------------------------------------------------------------------------------- /.github/workflows/ci-no-output.yaml: -------------------------------------------------------------------------------- 1 | name: CI-no-output 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build-test: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v2 11 | 12 | - name: Install dependencies 13 | uses: php-actions/composer@v6 14 | with: 15 | php_version: '8.1' 16 | ssh_key: ${{ secrets.SSH_KEY }} 17 | ssh_key_pub: ${{ secrets.SSH_KEY_PUB }} 18 | -------------------------------------------------------------------------------- /.github/workflows/ci-show-output-log.yml: -------------------------------------------------------------------------------- 1 | name: CI-show-output-log 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build-test: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v3 11 | 12 | - name: Install dependencies 13 | uses: php-actions/composer@v6 14 | with: 15 | php_version: 8.1 16 | ssh_key: ${{ secrets.SSH_KEY }} 17 | ssh_key_pub: ${{ secrets.SSH_KEY_PUB }} 18 | 19 | - uses: actions/upload-artifact@v3 20 | with: 21 | name: debug-output 22 | path: output.log 23 | 24 | - name: Check the content of the output log 25 | run: cat /home/runner/work/example-composer/example-composer/output.log 26 | -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build-test: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v3 11 | 12 | - name: Install dependencies 13 | uses: php-actions/composer@master 14 | 15 | with: 16 | php_version: '8.1' 17 | ssh_key: ${{ secrets.SSH_KEY }} 18 | ssh_key_pub: ${{ secrets.SSH_KEY_PUB }} 19 | 20 | - uses: actions/upload-artifact@v3 21 | with: 22 | name: debug-output 23 | path: output.log 24 | -------------------------------------------------------------------------------- /.github/workflows/composer-v4.yml: -------------------------------------------------------------------------------- 1 | name: CI-Composer-v4 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build-test: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v2 11 | 12 | - name: Install dependencies 13 | uses: php-actions/composer@v4 14 | with: 15 | composer_version: 1 16 | php_version: 8.0 17 | ssh_key: ${{ secrets.SSH_KEY }} 18 | ssh_key_pub: ${{ secrets.SSH_KEY_PUB }} 19 | -------------------------------------------------------------------------------- /.github/workflows/dump-autoloader.yaml: -------------------------------------------------------------------------------- 1 | name: Dump-Autoloader 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build-test: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v2 11 | 12 | - name: Dump autoload 13 | uses: php-actions/composer@master 14 | with: 15 | command: dump-autoload 16 | only_args: --no-dev --no-interaction --classmap-authoritative 17 | -------------------------------------------------------------------------------- /.github/workflows/validate.yaml: -------------------------------------------------------------------------------- 1 | name: Validate 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build-test: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v2 11 | 12 | - name: Validate dependencies 13 | uses: php-actions/composer@master 14 | with: 15 | command: validate 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | An example project that uses [php-actions/composer][composer-link] 2 | === 3 | 4 | This is a trivial project that holds only simple example functionality: a repository that installs its dependencies (a WebEngine application) plus a private repository. The private repository is hosted on Github at https://github.com/php-actions/example-private-repo (the link will return 404 due to it being private). 5 | 6 | An SSH key has been generated specifically for this project. It is a typical public/private pair of RSA keys. The example-private-repo repository has the key added as a read-only deploy key, so anyone with access to the key can clone the repo (but not push). The key pair is stored in this repository as a [Github Secret][secret]. 7 | 8 | Check out the [Actions tab in the Github repository][actions-tab] to see the past actions workflows and their outputs. You will see that both the [public repo for `phpgt/webengine`][webengine-link] and the [private repo for `php-actions/example-private-repo`][example-private-repo-link] are downloaded successfully. 9 | 10 | The file at .github/workflows/ci.yml shows how to use [php-actions/composer][composer-link]. 11 | 12 | *** 13 | 14 | If you found this repository helpful, please consider [sponsoring the developer][sponsor]. 15 | 16 | [secret]: https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets 17 | [composer-link]: https://github.com/php-actions/composer 18 | [actions-tab]: https://github.com/php-actions/example-phpunit/actions 19 | [sponsor]: https://github.com/sponsors/g105b 20 | [webengine-link]: https://github.com/phpgt/webengine 21 | [example-private-repo-link]: https://github/com/php-actions/example-private-repo -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "php-actions/example-composer", 3 | "description": "An example project that uses php-actions/composer", 4 | 5 | "repositories": [ 6 | { 7 | "type": "vcs", 8 | "url": "https://github.com/php-actions/example-private-repo" 9 | } 10 | ], 11 | 12 | "require": { 13 | "phpgt/webengine": "^v4", 14 | "php-actions/example-private-repo": "dev-master" 15 | }, 16 | 17 | "autoload": { 18 | "psr-4": { 19 | "ExampleComposer\\": "./src" 20 | } 21 | }, 22 | 23 | "scripts": { 24 | "env-test": "ExampleComposer\\Debug::inspectEnvironmentVariables", 25 | "show-version": "ExampleComposer\\Debug::showVersion" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "da7631be212f9b8d7181b80ae8e49a89", 8 | "packages": [ 9 | { 10 | "name": "magicalex/write-ini-file", 11 | "version": "v1.2.4", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/Magicalex/WriteiniFile.git", 15 | "reference": "3a933e8222ed2b0ff724c2d4278666fa257e42ac" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/Magicalex/WriteiniFile/zipball/3a933e8222ed2b0ff724c2d4278666fa257e42ac", 20 | "reference": "3a933e8222ed2b0ff724c2d4278666fa257e42ac", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": ">=5.6.0" 25 | }, 26 | "require-dev": { 27 | "php-coveralls/php-coveralls": "2.1.0", 28 | "phpunit/phpunit": "5.7.*" 29 | }, 30 | "type": "library", 31 | "autoload": { 32 | "psr-4": { 33 | "WriteiniFile\\": "src" 34 | } 35 | }, 36 | "notification-url": "https://packagist.org/downloads/", 37 | "license": [ 38 | "GPL-3.0" 39 | ], 40 | "authors": [ 41 | { 42 | "name": "magicalex", 43 | "email": "magicalex@mondedie.fr" 44 | } 45 | ], 46 | "description": "Write-ini-file php library for create, remove, erase, add, and update ini file", 47 | "homepage": "https://github.com/Magicalex/WriteIniFile", 48 | "keywords": [ 49 | "file", 50 | "ini", 51 | "write", 52 | "write_ini_file" 53 | ], 54 | "support": { 55 | "issues": "https://github.com/Magicalex/WriteiniFile/issues", 56 | "source": "https://github.com/Magicalex/WriteiniFile/tree/master" 57 | }, 58 | "time": "2018-09-09T12:40:38+00:00" 59 | }, 60 | { 61 | "name": "php-actions/example-private-repo", 62 | "version": "dev-master", 63 | "source": { 64 | "type": "git", 65 | "url": "git@github.com:php-actions/example-private-repo.git", 66 | "reference": "e7f9c74d461b820aecaf5ed7a668e03951b692fe" 67 | }, 68 | "dist": { 69 | "type": "zip", 70 | "url": "https://api.github.com/repos/php-actions/example-private-repo/zipball/e7f9c74d461b820aecaf5ed7a668e03951b692fe", 71 | "reference": "e7f9c74d461b820aecaf5ed7a668e03951b692fe", 72 | "shasum": "" 73 | }, 74 | "default-branch": true, 75 | "type": "library", 76 | "autoload": { 77 | "psr-4": { 78 | "App\\": "./src/" 79 | } 80 | }, 81 | "description": "This repo is private, used within example-composer.", 82 | "time": "2020-08-12T13:00:17+00:00" 83 | }, 84 | { 85 | "name": "phpgt/cli", 86 | "version": "v1.3.2", 87 | "source": { 88 | "type": "git", 89 | "url": "https://github.com/PhpGt/Cli.git", 90 | "reference": "3f00088f76225088602e6d9faa1cf90fbd2205d3" 91 | }, 92 | "dist": { 93 | "type": "zip", 94 | "url": "https://api.github.com/repos/PhpGt/Cli/zipball/3f00088f76225088602e6d9faa1cf90fbd2205d3", 95 | "reference": "3f00088f76225088602e6d9faa1cf90fbd2205d3", 96 | "shasum": "" 97 | }, 98 | "require": { 99 | "ext-json": "*", 100 | "ext-readline": "*", 101 | "php": ">=8.0", 102 | "phpgt/daemon": "1.*" 103 | }, 104 | "require-dev": { 105 | "phpstan/phpstan": ">=0.12.64", 106 | "phpunit/phpunit": "9.*" 107 | }, 108 | "type": "library", 109 | "autoload": { 110 | "psr-4": { 111 | "Gt\\Cli\\": "./src" 112 | } 113 | }, 114 | "notification-url": "https://packagist.org/downloads/", 115 | "license": [ 116 | "MIT" 117 | ], 118 | "authors": [ 119 | { 120 | "name": "Greg Bowler", 121 | "email": "greg.bowler@g105b.com" 122 | } 123 | ], 124 | "description": "Command line interface builder.", 125 | "keywords": [ 126 | "cli", 127 | "phpgt", 128 | "terminal", 129 | "webengine" 130 | ], 131 | "support": { 132 | "issues": "https://github.com/PhpGt/Cli/issues", 133 | "source": "https://github.com/PhpGt/Cli/tree/v1.3.2" 134 | }, 135 | "funding": [ 136 | { 137 | "url": "https://github.com/sponsors/PhpGt", 138 | "type": "github" 139 | } 140 | ], 141 | "time": "2021-06-15T19:01:44+00:00" 142 | }, 143 | { 144 | "name": "phpgt/config", 145 | "version": "v1.1.0", 146 | "source": { 147 | "type": "git", 148 | "url": "https://github.com/PhpGt/Config.git", 149 | "reference": "805bba9ef1cb8e087a04e4601045271f73868a96" 150 | }, 151 | "dist": { 152 | "type": "zip", 153 | "url": "https://api.github.com/repos/PhpGt/Config/zipball/805bba9ef1cb8e087a04e4601045271f73868a96", 154 | "reference": "805bba9ef1cb8e087a04e4601045271f73868a96", 155 | "shasum": "" 156 | }, 157 | "require": { 158 | "magicalex/write-ini-file": "v1.2.4", 159 | "php": ">=8.0", 160 | "phpgt/typesafegetter": "1.*" 161 | }, 162 | "require-dev": { 163 | "phpstan/phpstan": ">=0.12.64", 164 | "phpunit/phpunit": "9.*" 165 | }, 166 | "bin": [ 167 | "bin/config-generate" 168 | ], 169 | "type": "library", 170 | "autoload": { 171 | "psr-4": { 172 | "Gt\\Config\\": "./src" 173 | } 174 | }, 175 | "notification-url": "https://packagist.org/downloads/", 176 | "license": [ 177 | "MIT" 178 | ], 179 | "authors": [ 180 | { 181 | "name": "Greg Bowler", 182 | "email": "greg.bowler@g105b.com" 183 | } 184 | ], 185 | "description": "Manage configuration with ini files and environment variables.", 186 | "support": { 187 | "issues": "https://github.com/PhpGt/Config/issues", 188 | "source": "https://github.com/PhpGt/Config/tree/v1.1.0" 189 | }, 190 | "funding": [ 191 | { 192 | "url": "https://github.com/sponsors/PhpGt", 193 | "type": "github" 194 | } 195 | ], 196 | "time": "2021-01-30T14:24:07+00:00" 197 | }, 198 | { 199 | "name": "phpgt/csrf", 200 | "version": "v1.7.2", 201 | "source": { 202 | "type": "git", 203 | "url": "https://github.com/PhpGt/Csrf.git", 204 | "reference": "301ede2ac2ca158e7e892eda7fc4a8752574d9ea" 205 | }, 206 | "dist": { 207 | "type": "zip", 208 | "url": "https://api.github.com/repos/PhpGt/Csrf/zipball/301ede2ac2ca158e7e892eda7fc4a8752574d9ea", 209 | "reference": "301ede2ac2ca158e7e892eda7fc4a8752574d9ea", 210 | "shasum": "" 211 | }, 212 | "require": { 213 | "php": ">=7.4", 214 | "phpgt/dom": "^3.0.0", 215 | "phpgt/session": "1.*" 216 | }, 217 | "require-dev": { 218 | "phpstan/phpstan": ">=0.12.64", 219 | "phpunit/phpunit": "9.*" 220 | }, 221 | "type": "library", 222 | "autoload": { 223 | "psr-4": { 224 | "Gt\\Csrf\\": "./src" 225 | } 226 | }, 227 | "notification-url": "https://packagist.org/downloads/", 228 | "license": [ 229 | "MIT" 230 | ], 231 | "authors": [ 232 | { 233 | "name": "James Fellows", 234 | "email": "mrfellows@gmail.com", 235 | "role": "Developer" 236 | }, 237 | { 238 | "name": "Greg Bowler", 239 | "email": "greg.bowler@g105b.com", 240 | "role": "Developer" 241 | } 242 | ], 243 | "description": "Automatic protection from Cross-Site Request Forgery.", 244 | "support": { 245 | "issues": "https://github.com/PhpGt/Csrf/issues", 246 | "source": "https://github.com/PhpGt/Csrf/tree/v1.7.2" 247 | }, 248 | "funding": [ 249 | { 250 | "url": "https://github.com/sponsors/PhpGt", 251 | "type": "github" 252 | } 253 | ], 254 | "time": "2021-10-17T17:24:40+00:00" 255 | }, 256 | { 257 | "name": "phpgt/cssxpath", 258 | "version": "v1.1.4", 259 | "source": { 260 | "type": "git", 261 | "url": "https://github.com/PhpGt/CssXPath.git", 262 | "reference": "7f073ba346c49a339a7b2cda9ccfdb1994c5d271" 263 | }, 264 | "dist": { 265 | "type": "zip", 266 | "url": "https://api.github.com/repos/PhpGt/CssXPath/zipball/7f073ba346c49a339a7b2cda9ccfdb1994c5d271", 267 | "reference": "7f073ba346c49a339a7b2cda9ccfdb1994c5d271", 268 | "shasum": "" 269 | }, 270 | "require": { 271 | "php": ">=7.3" 272 | }, 273 | "require-dev": { 274 | "ext-dom": "*", 275 | "ext-libxml": "*", 276 | "phpstan/phpstan": ">=0.12.42", 277 | "phpunit/phpunit": "^9.5" 278 | }, 279 | "type": "library", 280 | "autoload": { 281 | "psr-4": { 282 | "Gt\\CssXPath\\": "./src" 283 | } 284 | }, 285 | "notification-url": "https://packagist.org/downloads/", 286 | "license": [ 287 | "MIT" 288 | ], 289 | "authors": [ 290 | { 291 | "name": "Greg Bowler", 292 | "email": "greg.bowler@g105b.com", 293 | "homepage": "https://www.g105b.com", 294 | "role": "Developer" 295 | } 296 | ], 297 | "description": "Convert CSS selectors to XPath queries.", 298 | "support": { 299 | "issues": "https://github.com/PhpGt/CssXPath/issues", 300 | "source": "https://github.com/PhpGt/CssXPath/tree/v1.1.4" 301 | }, 302 | "funding": [ 303 | { 304 | "url": "https://github.com/sponsors/PhpGt", 305 | "type": "github" 306 | } 307 | ], 308 | "time": "2021-11-13T15:40:44+00:00" 309 | }, 310 | { 311 | "name": "phpgt/daemon", 312 | "version": "v1.1.2", 313 | "source": { 314 | "type": "git", 315 | "url": "https://github.com/PhpGt/Daemon.git", 316 | "reference": "6490df99a22818149f30e3af408002ea7f73e035" 317 | }, 318 | "dist": { 319 | "type": "zip", 320 | "url": "https://api.github.com/repos/PhpGt/Daemon/zipball/6490df99a22818149f30e3af408002ea7f73e035", 321 | "reference": "6490df99a22818149f30e3af408002ea7f73e035", 322 | "shasum": "" 323 | }, 324 | "require": { 325 | "php": ">=7.4" 326 | }, 327 | "require-dev": { 328 | "phpstan/phpstan": ">=0.12.42", 329 | "phpunit/phpunit": "9.*" 330 | }, 331 | "type": "library", 332 | "autoload": { 333 | "psr-4": { 334 | "Gt\\Daemon\\": "./src" 335 | } 336 | }, 337 | "notification-url": "https://packagist.org/downloads/", 338 | "description": "Background script execution with cross-platform compatible streaming.", 339 | "support": { 340 | "issues": "https://github.com/PhpGt/Daemon/issues", 341 | "source": "https://github.com/PhpGt/Daemon/tree/v1.1.2" 342 | }, 343 | "funding": [ 344 | { 345 | "url": "https://github.com/phpgt", 346 | "type": "github" 347 | } 348 | ], 349 | "time": "2021-02-02T17:33:16+00:00" 350 | }, 351 | { 352 | "name": "phpgt/database", 353 | "version": "v1.4.0", 354 | "source": { 355 | "type": "git", 356 | "url": "https://github.com/PhpGt/Database.git", 357 | "reference": "db929a74e7e57f8424027c8fe685b37c6459db86" 358 | }, 359 | "dist": { 360 | "type": "zip", 361 | "url": "https://api.github.com/repos/PhpGt/Database/zipball/db929a74e7e57f8424027c8fe685b37c6459db86", 362 | "reference": "db929a74e7e57f8424027c8fe685b37c6459db86", 363 | "shasum": "" 364 | }, 365 | "require": { 366 | "ext-pdo": "*", 367 | "php": ">=7.4", 368 | "phpgt/cli": "^1.3", 369 | "phpgt/config": "^v1.1.0" 370 | }, 371 | "require-dev": { 372 | "ext-sqlite3": "*", 373 | "phpstan/phpstan": "^0.12", 374 | "phpunit/phpunit": "^9.4" 375 | }, 376 | "bin": [ 377 | "bin/migrate" 378 | ], 379 | "type": "library", 380 | "autoload": { 381 | "psr-4": { 382 | "Gt\\Database\\": "./src" 383 | } 384 | }, 385 | "notification-url": "https://packagist.org/downloads/", 386 | "license": [ 387 | "MIT" 388 | ], 389 | "authors": [ 390 | { 391 | "name": "Greg Bowler", 392 | "email": "greg.bowler@g105b.com" 393 | }, 394 | { 395 | "name": "James Fellows", 396 | "email": "james.fellows@finanscapes.com" 397 | }, 398 | { 399 | "name": "Christopher Paul Shaw", 400 | "email": "i-am-in-your-code-stealing-your-lulz@chris-shaw.com" 401 | } 402 | ], 403 | "description": "Database API organisation.", 404 | "support": { 405 | "issues": "https://github.com/PhpGt/Database/issues", 406 | "source": "https://github.com/PhpGt/Database/tree/v1.4.0" 407 | }, 408 | "funding": [ 409 | { 410 | "url": "https://github.com/sponsors/PhpGt", 411 | "type": "github" 412 | } 413 | ], 414 | "time": "2021-09-23T09:07:04+00:00" 415 | }, 416 | { 417 | "name": "phpgt/dom", 418 | "version": "v3.0.2", 419 | "source": { 420 | "type": "git", 421 | "url": "https://github.com/PhpGt/Dom.git", 422 | "reference": "762e10859d660d30c159cba3e8af19ec1ae5203c" 423 | }, 424 | "dist": { 425 | "type": "zip", 426 | "url": "https://api.github.com/repos/PhpGt/Dom/zipball/762e10859d660d30c159cba3e8af19ec1ae5203c", 427 | "reference": "762e10859d660d30c159cba3e8af19ec1ae5203c", 428 | "shasum": "" 429 | }, 430 | "require": { 431 | "ext-dom": "*", 432 | "ext-libxml": "*", 433 | "ext-mbstring": "*", 434 | "php": ">=8.0", 435 | "phpgt/cssxpath": ">=1.1.2", 436 | "phpgt/propfunc": "^1.0", 437 | "psr/http-message": "^1.0" 438 | }, 439 | "require-dev": { 440 | "phpstan/phpstan": ">=0.12", 441 | "phpunit/phpunit": ">=9.3.8" 442 | }, 443 | "type": "library", 444 | "autoload": { 445 | "psr-4": { 446 | "Gt\\Dom\\": "./src" 447 | } 448 | }, 449 | "notification-url": "https://packagist.org/downloads/", 450 | "license": [ 451 | "MIT" 452 | ], 453 | "authors": [ 454 | { 455 | "name": "Greg Bowler", 456 | "email": "greg.bowler@g105b.com", 457 | "homepage": "https://www.g105b.com", 458 | "role": "Developer" 459 | }, 460 | { 461 | "name": "Alvaro Guimaraes", 462 | "homepage": "https://github.com/aguimaraes", 463 | "role": "Developer" 464 | }, 465 | { 466 | "name": "James Fellows", 467 | "homepage": "https://github.com/j4m3s", 468 | "role": "Developer" 469 | }, 470 | { 471 | "name": "Emile Ward", 472 | "homepage": "https://github.com/emileward", 473 | "role": "Developer" 474 | }, 475 | { 476 | "name": "Jelmer Wijnja", 477 | "homepage": "https://github.com/Jelmergu", 478 | "role": "Developer" 479 | }, 480 | { 481 | "name": "Ognjen Petrovic", 482 | "homepage": "https://github.com/ognjen-petrovic", 483 | "role": "Developer" 484 | }, 485 | { 486 | "name": "Jacob Bearden", 487 | "homepage": "https://github.com/jacobbearden", 488 | "role": "Documentation contributor" 489 | }, 490 | { 491 | "name": "Jaroslav Týc", 492 | "homepage": "https://www.jaroslavtyc.com/", 493 | "role": "Developer" 494 | }, 495 | { 496 | "name": "Andrii Beziazychnyi", 497 | "homepage": "https://www.atwix.com/", 498 | "role": "Developer" 499 | } 500 | ], 501 | "description": "The modern DOM API for PHP projects.", 502 | "support": { 503 | "issues": "https://github.com/PhpGt/Dom/issues", 504 | "source": "https://github.com/PhpGt/Dom/tree/v3.0.2" 505 | }, 506 | "funding": [ 507 | { 508 | "url": "https://github.com/sponsors/PhpGt", 509 | "type": "github" 510 | } 511 | ], 512 | "time": "2022-01-30T16:47:45+00:00" 513 | }, 514 | { 515 | "name": "phpgt/domtemplate", 516 | "version": "v2.2.3", 517 | "source": { 518 | "type": "git", 519 | "url": "https://github.com/PhpGt/DomTemplate.git", 520 | "reference": "d8ea73c17a81ab54bea671701b324650f4d7dc48" 521 | }, 522 | "dist": { 523 | "type": "zip", 524 | "url": "https://api.github.com/repos/PhpGt/DomTemplate/zipball/d8ea73c17a81ab54bea671701b324650f4d7dc48", 525 | "reference": "d8ea73c17a81ab54bea671701b324650f4d7dc48", 526 | "shasum": "" 527 | }, 528 | "require": { 529 | "ext-dom": "*", 530 | "php": ">=8.0", 531 | "phpgt/dom": "^3.0.0" 532 | }, 533 | "require-dev": { 534 | "phpstan/phpstan": "~1.1", 535 | "phpunit/phpunit": "~9.5" 536 | }, 537 | "type": "library", 538 | "autoload": { 539 | "psr-4": { 540 | "Gt\\DomTemplate\\": "./src" 541 | } 542 | }, 543 | "notification-url": "https://packagist.org/downloads/", 544 | "license": [ 545 | "MIT" 546 | ], 547 | "description": "Bind dynamic data to reusable HTML components.", 548 | "support": { 549 | "issues": "https://github.com/PhpGt/DomTemplate/issues", 550 | "source": "https://github.com/PhpGt/DomTemplate/tree/v2.2.3" 551 | }, 552 | "funding": [ 553 | { 554 | "url": "https://github.com/sponsors/PhpGt", 555 | "type": "github" 556 | } 557 | ], 558 | "time": "2022-01-30T16:25:30+00:00" 559 | }, 560 | { 561 | "name": "phpgt/http", 562 | "version": "v1.1.4", 563 | "source": { 564 | "type": "git", 565 | "url": "https://github.com/PhpGt/Http.git", 566 | "reference": "80ed7269050bc0f2de2402c5461711dd2418f55f" 567 | }, 568 | "dist": { 569 | "type": "zip", 570 | "url": "https://api.github.com/repos/PhpGt/Http/zipball/80ed7269050bc0f2de2402c5461711dd2418f55f", 571 | "reference": "80ed7269050bc0f2de2402c5461711dd2418f55f", 572 | "shasum": "" 573 | }, 574 | "require": { 575 | "php": ">=8.0", 576 | "phpgt/input": "^v1", 577 | "psr/http-message": "^v1.0.1", 578 | "willdurand/negotiation": "v3.0.*" 579 | }, 580 | "require-dev": { 581 | "phpstan/phpstan": ">=0.12.64", 582 | "phpunit/phpunit": "9.*" 583 | }, 584 | "type": "library", 585 | "autoload": { 586 | "psr-4": { 587 | "Gt\\Http\\": "./src" 588 | } 589 | }, 590 | "notification-url": "https://packagist.org/downloads/", 591 | "license": [ 592 | "MIT" 593 | ], 594 | "description": "PSR-7 HTTP message implementation.", 595 | "support": { 596 | "issues": "https://github.com/PhpGt/Http/issues", 597 | "source": "https://github.com/PhpGt/Http/tree/v1.1.4" 598 | }, 599 | "funding": [ 600 | { 601 | "url": "https://github.com/sponsors/PhpGt", 602 | "type": "github" 603 | } 604 | ], 605 | "time": "2021-06-23T15:45:09+00:00" 606 | }, 607 | { 608 | "name": "phpgt/input", 609 | "version": "v1.1.2", 610 | "source": { 611 | "type": "git", 612 | "url": "https://github.com/PhpGt/Input.git", 613 | "reference": "ae78931ffd5c4800f362db61bd86f8e545733e86" 614 | }, 615 | "dist": { 616 | "type": "zip", 617 | "url": "https://api.github.com/repos/PhpGt/Input/zipball/ae78931ffd5c4800f362db61bd86f8e545733e86", 618 | "reference": "ae78931ffd5c4800f362db61bd86f8e545733e86", 619 | "shasum": "" 620 | }, 621 | "require": { 622 | "phpgt/http": "*" 623 | }, 624 | "require-dev": { 625 | "phpunit/phpunit": "8.*" 626 | }, 627 | "type": "library", 628 | "autoload": { 629 | "psr-4": { 630 | "Gt\\Input\\": "./src" 631 | } 632 | }, 633 | "notification-url": "https://packagist.org/downloads/", 634 | "license": [ 635 | "MIT" 636 | ], 637 | "description": "Encapsulated user input.", 638 | "support": { 639 | "issues": "https://github.com/PhpGt/Input/issues", 640 | "source": "https://github.com/PhpGt/Input/tree/v1.1.2" 641 | }, 642 | "time": "2019-11-29T11:22:35+00:00" 643 | }, 644 | { 645 | "name": "phpgt/logger", 646 | "version": "v1.0.0", 647 | "source": { 648 | "type": "git", 649 | "url": "https://github.com/PhpGt/Logger.git", 650 | "reference": "9cbb7c986941bff513aedf80dfa256497aff8dd2" 651 | }, 652 | "dist": { 653 | "type": "zip", 654 | "url": "https://api.github.com/repos/PhpGt/Logger/zipball/9cbb7c986941bff513aedf80dfa256497aff8dd2", 655 | "reference": "9cbb7c986941bff513aedf80dfa256497aff8dd2", 656 | "shasum": "" 657 | }, 658 | "require": { 659 | "php": ">=7.4" 660 | }, 661 | "require-dev": { 662 | "phpstan/phpstan": ">=0.12.64", 663 | "phpunit/phpunit": "9.*" 664 | }, 665 | "type": "library", 666 | "autoload": { 667 | "psr-4": { 668 | "Gt\\Logger\\": "./src" 669 | } 670 | }, 671 | "notification-url": "https://packagist.org/downloads/", 672 | "license": [ 673 | "MIT" 674 | ], 675 | "authors": [ 676 | { 677 | "name": "Greg Bowler", 678 | "email": "greg.bowler@g105b.com" 679 | } 680 | ], 681 | "description": "PSR-3 logger and implementation.", 682 | "support": { 683 | "issues": "https://github.com/PhpGt/Logger/issues", 684 | "source": "https://github.com/PhpGt/Logger/tree/v1.0.0" 685 | }, 686 | "funding": [ 687 | { 688 | "url": "https://github.com/sponsors/PhpGt", 689 | "type": "github" 690 | } 691 | ], 692 | "time": "2021-09-21T14:18:11+00:00" 693 | }, 694 | { 695 | "name": "phpgt/propfunc", 696 | "version": "v1.0.1", 697 | "source": { 698 | "type": "git", 699 | "url": "https://github.com/PhpGt/PropFunc.git", 700 | "reference": "091213649e89ff22d1ef640b46fbee5215c65520" 701 | }, 702 | "dist": { 703 | "type": "zip", 704 | "url": "https://api.github.com/repos/PhpGt/PropFunc/zipball/091213649e89ff22d1ef640b46fbee5215c65520", 705 | "reference": "091213649e89ff22d1ef640b46fbee5215c65520", 706 | "shasum": "" 707 | }, 708 | "require": { 709 | "php": ">=8.0" 710 | }, 711 | "require-dev": { 712 | "phpstan/phpstan": ">=0.12", 713 | "phpunit/phpunit": ">=9.3" 714 | }, 715 | "type": "library", 716 | "autoload": { 717 | "psr-4": { 718 | "Gt\\PropFunc\\": "./src" 719 | } 720 | }, 721 | "notification-url": "https://packagist.org/downloads/", 722 | "license": [ 723 | "MIT" 724 | ], 725 | "authors": [ 726 | { 727 | "name": "Greg Bowler", 728 | "email": "greg.bowler@g105b.com", 729 | "homepage": "https://www.g105b.com", 730 | "role": "Developer" 731 | } 732 | ], 733 | "description": "Property accessor and mutator functions.", 734 | "support": { 735 | "issues": "https://github.com/PhpGt/PropFunc/issues", 736 | "source": "https://github.com/PhpGt/PropFunc/tree/v1.0.1" 737 | }, 738 | "funding": [ 739 | { 740 | "url": "https://github.com/sponsors/PhpGt", 741 | "type": "github" 742 | } 743 | ], 744 | "time": "2021-03-23T12:46:44+00:00" 745 | }, 746 | { 747 | "name": "phpgt/routing", 748 | "version": "v1.0.5", 749 | "source": { 750 | "type": "git", 751 | "url": "https://github.com/PhpGt/Routing.git", 752 | "reference": "847f46706a358340989cb996ce499fdcd8fca498" 753 | }, 754 | "dist": { 755 | "type": "zip", 756 | "url": "https://api.github.com/repos/PhpGt/Routing/zipball/847f46706a358340989cb996ce499fdcd8fca498", 757 | "reference": "847f46706a358340989cb996ce499fdcd8fca498", 758 | "shasum": "" 759 | }, 760 | "require": { 761 | "php": ">=8.0", 762 | "phpgt/config": "^v1.1.0", 763 | "phpgt/http": "^v1", 764 | "phpgt/servicecontainer": "1.*", 765 | "phpgt/typesafegetter": "^1.2.2", 766 | "psr/http-message": "1.*", 767 | "willdurand/negotiation": "^3.0" 768 | }, 769 | "require-dev": { 770 | "phpstan/phpstan": "~1.2", 771 | "phpunit/phpunit": "~9.5" 772 | }, 773 | "type": "library", 774 | "autoload": { 775 | "psr-4": { 776 | "Gt\\Routing\\": "./src" 777 | } 778 | }, 779 | "notification-url": "https://packagist.org/downloads/", 780 | "license": [ 781 | "MIT" 782 | ], 783 | "authors": [ 784 | { 785 | "name": "Greg Bowler", 786 | "email": "greg.bowler@g105b.com", 787 | "homepage": "https://www.g105b.com", 788 | "role": "Developer" 789 | } 790 | ], 791 | "description": "Routes HTTP requests to your code.", 792 | "keywords": [ 793 | "assembly", 794 | "logic", 795 | "redirect", 796 | "request", 797 | "route", 798 | "router", 799 | "uri", 800 | "url", 801 | "view" 802 | ], 803 | "support": { 804 | "issues": "https://github.com/PhpGt/Routing/issues", 805 | "source": "https://github.com/PhpGt/Routing/tree/v1.0.5" 806 | }, 807 | "funding": [ 808 | { 809 | "url": "https://github.com/sponsors/PhpGt", 810 | "type": "github" 811 | } 812 | ], 813 | "time": "2022-01-31T13:57:32+00:00" 814 | }, 815 | { 816 | "name": "phpgt/servicecontainer", 817 | "version": "v1.1.2", 818 | "source": { 819 | "type": "git", 820 | "url": "https://github.com/PhpGt/ServiceContainer.git", 821 | "reference": "8d0faf7325af1b5e46e24a19c5fa6a4f9371c240" 822 | }, 823 | "dist": { 824 | "type": "zip", 825 | "url": "https://api.github.com/repos/PhpGt/ServiceContainer/zipball/8d0faf7325af1b5e46e24a19c5fa6a4f9371c240", 826 | "reference": "8d0faf7325af1b5e46e24a19c5fa6a4f9371c240", 827 | "shasum": "" 828 | }, 829 | "require": { 830 | "php": ">=8.0", 831 | "psr/container": "^2.0.1" 832 | }, 833 | "provide": { 834 | "psr/container-implementation": "1.0" 835 | }, 836 | "require-dev": { 837 | "phpstan/phpstan": "0.12.*", 838 | "phpunit/phpunit": "9.*" 839 | }, 840 | "type": "library", 841 | "autoload": { 842 | "psr-4": { 843 | "Gt\\ServiceContainer\\": "./src" 844 | } 845 | }, 846 | "notification-url": "https://packagist.org/downloads/", 847 | "license": [ 848 | "MIT" 849 | ], 850 | "description": "Centralised construction of a project's core objects.", 851 | "support": { 852 | "issues": "https://github.com/PhpGt/ServiceContainer/issues", 853 | "source": "https://github.com/PhpGt/ServiceContainer/tree/v1.1.2" 854 | }, 855 | "funding": [ 856 | { 857 | "url": "https://github.com/sponsors/PhpGt", 858 | "type": "github" 859 | } 860 | ], 861 | "time": "2021-11-09T11:41:52+00:00" 862 | }, 863 | { 864 | "name": "phpgt/session", 865 | "version": "v1.1.3", 866 | "source": { 867 | "type": "git", 868 | "url": "https://github.com/PhpGt/Session.git", 869 | "reference": "5da87957e5b82f76b8cf4461b276bb22fae7c82c" 870 | }, 871 | "dist": { 872 | "type": "zip", 873 | "url": "https://api.github.com/repos/PhpGt/Session/zipball/5da87957e5b82f76b8cf4461b276bb22fae7c82c", 874 | "reference": "5da87957e5b82f76b8cf4461b276bb22fae7c82c", 875 | "shasum": "" 876 | }, 877 | "require": { 878 | "php": ">=7.2" 879 | }, 880 | "require-dev": { 881 | "phpstan/phpstan": "1.0.2", 882 | "phpunit/phpunit": "9.*" 883 | }, 884 | "type": "library", 885 | "autoload": { 886 | "psr-4": { 887 | "Gt\\Session\\": "./src" 888 | } 889 | }, 890 | "notification-url": "https://packagist.org/downloads/", 891 | "license": [ 892 | "MIT" 893 | ], 894 | "description": "Encapsulated user sessions.", 895 | "support": { 896 | "issues": "https://github.com/PhpGt/Session/issues", 897 | "source": "https://github.com/PhpGt/Session/tree/v1.1.3" 898 | }, 899 | "funding": [ 900 | { 901 | "url": "https://github.com/sponsors/PhpGt", 902 | "type": "github" 903 | } 904 | ], 905 | "time": "2021-11-04T14:38:29+00:00" 906 | }, 907 | { 908 | "name": "phpgt/sync", 909 | "version": "v1.2.8", 910 | "source": { 911 | "type": "git", 912 | "url": "https://github.com/PhpGt/Sync.git", 913 | "reference": "47e6865deb2fa82c6738c911be60f0eb2f845d21" 914 | }, 915 | "dist": { 916 | "type": "zip", 917 | "url": "https://api.github.com/repos/PhpGt/Sync/zipball/47e6865deb2fa82c6738c911be60f0eb2f845d21", 918 | "reference": "47e6865deb2fa82c6738c911be60f0eb2f845d21", 919 | "shasum": "" 920 | }, 921 | "require": { 922 | "php": ">=8.0", 923 | "phpgt/cli": "1.3.*", 924 | "webmozart/glob": "4.*" 925 | }, 926 | "require-dev": { 927 | "phpstan/phpstan": "^0.12", 928 | "phpunit/phpunit": "^9.5" 929 | }, 930 | "bin": [ 931 | "bin/sync" 932 | ], 933 | "type": "library", 934 | "autoload": { 935 | "psr-4": { 936 | "Gt\\Sync\\": "./src" 937 | } 938 | }, 939 | "notification-url": "https://packagist.org/downloads/", 940 | "description": "Synchronise two directories.", 941 | "keywords": [ 942 | "copy", 943 | "file", 944 | "files", 945 | "filesystem", 946 | "recursive", 947 | "rsync", 948 | "synchronise", 949 | "synchronize" 950 | ], 951 | "support": { 952 | "issues": "https://github.com/PhpGt/Sync/issues", 953 | "source": "https://github.com/PhpGt/Sync/tree/v1.2.8" 954 | }, 955 | "funding": [ 956 | { 957 | "url": "https://github.com/sponsors/PhpGt", 958 | "type": "github" 959 | } 960 | ], 961 | "time": "2021-10-13T20:05:27+00:00" 962 | }, 963 | { 964 | "name": "phpgt/typesafegetter", 965 | "version": "v1.2.2", 966 | "source": { 967 | "type": "git", 968 | "url": "https://github.com/PhpGt/TypeSafeGetter.git", 969 | "reference": "ffeb5d847b3a4b36081a5cd180587fc4d83c6e31" 970 | }, 971 | "dist": { 972 | "type": "zip", 973 | "url": "https://api.github.com/repos/PhpGt/TypeSafeGetter/zipball/ffeb5d847b3a4b36081a5cd180587fc4d83c6e31", 974 | "reference": "ffeb5d847b3a4b36081a5cd180587fc4d83c6e31", 975 | "shasum": "" 976 | }, 977 | "require": { 978 | "php": ">=8.0" 979 | }, 980 | "require-dev": { 981 | "phpstan/phpstan": ">=0.12.42" 982 | }, 983 | "type": "library", 984 | "autoload": { 985 | "psr-4": { 986 | "Gt\\TypeSafeGetter\\": "./src" 987 | } 988 | }, 989 | "notification-url": "https://packagist.org/downloads/", 990 | "license": [ 991 | "MIT" 992 | ], 993 | "authors": [ 994 | { 995 | "name": "Greg Bowler", 996 | "email": "greg.bowler@g105b.com" 997 | } 998 | ], 999 | "description": "An interface for objects that expose type-safe getter methods.", 1000 | "support": { 1001 | "issues": "https://github.com/PhpGt/TypeSafeGetter/issues", 1002 | "source": "https://github.com/PhpGt/TypeSafeGetter/tree/v1.2.2" 1003 | }, 1004 | "funding": [ 1005 | { 1006 | "url": "https://github.com/sponsors/PhpGt", 1007 | "type": "github" 1008 | } 1009 | ], 1010 | "time": "2021-01-30T12:18:23+00:00" 1011 | }, 1012 | { 1013 | "name": "phpgt/webengine", 1014 | "version": "v4.0.4", 1015 | "source": { 1016 | "type": "git", 1017 | "url": "https://github.com/PhpGt/WebEngine.git", 1018 | "reference": "0316a042a1a05697b58d56f2e888a5f00c181aa8" 1019 | }, 1020 | "dist": { 1021 | "type": "zip", 1022 | "url": "https://api.github.com/repos/PhpGt/WebEngine/zipball/0316a042a1a05697b58d56f2e888a5f00c181aa8", 1023 | "reference": "0316a042a1a05697b58d56f2e888a5f00c181aa8", 1024 | "shasum": "" 1025 | }, 1026 | "require": { 1027 | "ext-dom": "*", 1028 | "ext-json": "*", 1029 | "ext-posix": "*", 1030 | "php": ">=8.0", 1031 | "phpgt/config": "^1.0", 1032 | "phpgt/csrf": "^1.7.2", 1033 | "phpgt/database": "^1.4", 1034 | "phpgt/dom": "^3.0.0", 1035 | "phpgt/domtemplate": "^2.0", 1036 | "phpgt/http": "^1.0", 1037 | "phpgt/logger": "^1.0", 1038 | "phpgt/routing": "^1.0", 1039 | "phpgt/servicecontainer": "^1.1.1", 1040 | "phpgt/session": "^1.1.2", 1041 | "phpgt/sync": "^1.2", 1042 | "psr/http-server-middleware": "^1.0", 1043 | "willdurand/negotiation": "^3.0" 1044 | }, 1045 | "require-dev": { 1046 | "phpstan/phpstan": "~1.1", 1047 | "phpunit/phpunit": "~9.5" 1048 | }, 1049 | "type": "library", 1050 | "autoload": { 1051 | "psr-4": { 1052 | "Gt\\WebEngine\\": "./src/" 1053 | } 1054 | }, 1055 | "notification-url": "https://packagist.org/downloads/", 1056 | "license": [ 1057 | "MIT" 1058 | ], 1059 | "description": "Rapid development engine.", 1060 | "keywords": [ 1061 | "Toolbox", 1062 | "framework", 1063 | "gt", 1064 | "php", 1065 | "php.gt", 1066 | "phpgt", 1067 | "prototype", 1068 | "router", 1069 | "webengine", 1070 | "webservice" 1071 | ], 1072 | "support": { 1073 | "issues": "https://github.com/PhpGt/WebEngine/issues", 1074 | "source": "https://github.com/PhpGt/WebEngine/tree/v4.0.4" 1075 | }, 1076 | "funding": [ 1077 | { 1078 | "url": "https://github.com/sponsors/PhpGt", 1079 | "type": "github" 1080 | } 1081 | ], 1082 | "time": "2022-02-02T08:45:12+00:00" 1083 | }, 1084 | { 1085 | "name": "psr/container", 1086 | "version": "2.0.2", 1087 | "source": { 1088 | "type": "git", 1089 | "url": "https://github.com/php-fig/container.git", 1090 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" 1091 | }, 1092 | "dist": { 1093 | "type": "zip", 1094 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1095 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1096 | "shasum": "" 1097 | }, 1098 | "require": { 1099 | "php": ">=7.4.0" 1100 | }, 1101 | "type": "library", 1102 | "extra": { 1103 | "branch-alias": { 1104 | "dev-master": "2.0.x-dev" 1105 | } 1106 | }, 1107 | "autoload": { 1108 | "psr-4": { 1109 | "Psr\\Container\\": "src/" 1110 | } 1111 | }, 1112 | "notification-url": "https://packagist.org/downloads/", 1113 | "license": [ 1114 | "MIT" 1115 | ], 1116 | "authors": [ 1117 | { 1118 | "name": "PHP-FIG", 1119 | "homepage": "https://www.php-fig.org/" 1120 | } 1121 | ], 1122 | "description": "Common Container Interface (PHP FIG PSR-11)", 1123 | "homepage": "https://github.com/php-fig/container", 1124 | "keywords": [ 1125 | "PSR-11", 1126 | "container", 1127 | "container-interface", 1128 | "container-interop", 1129 | "psr" 1130 | ], 1131 | "support": { 1132 | "issues": "https://github.com/php-fig/container/issues", 1133 | "source": "https://github.com/php-fig/container/tree/2.0.2" 1134 | }, 1135 | "time": "2021-11-05T16:47:00+00:00" 1136 | }, 1137 | { 1138 | "name": "psr/http-message", 1139 | "version": "1.0.1", 1140 | "source": { 1141 | "type": "git", 1142 | "url": "https://github.com/php-fig/http-message.git", 1143 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 1144 | }, 1145 | "dist": { 1146 | "type": "zip", 1147 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 1148 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 1149 | "shasum": "" 1150 | }, 1151 | "require": { 1152 | "php": ">=5.3.0" 1153 | }, 1154 | "type": "library", 1155 | "extra": { 1156 | "branch-alias": { 1157 | "dev-master": "1.0.x-dev" 1158 | } 1159 | }, 1160 | "autoload": { 1161 | "psr-4": { 1162 | "Psr\\Http\\Message\\": "src/" 1163 | } 1164 | }, 1165 | "notification-url": "https://packagist.org/downloads/", 1166 | "license": [ 1167 | "MIT" 1168 | ], 1169 | "authors": [ 1170 | { 1171 | "name": "PHP-FIG", 1172 | "homepage": "http://www.php-fig.org/" 1173 | } 1174 | ], 1175 | "description": "Common interface for HTTP messages", 1176 | "homepage": "https://github.com/php-fig/http-message", 1177 | "keywords": [ 1178 | "http", 1179 | "http-message", 1180 | "psr", 1181 | "psr-7", 1182 | "request", 1183 | "response" 1184 | ], 1185 | "support": { 1186 | "source": "https://github.com/php-fig/http-message/tree/master" 1187 | }, 1188 | "time": "2016-08-06T14:39:51+00:00" 1189 | }, 1190 | { 1191 | "name": "psr/http-server-handler", 1192 | "version": "1.0.1", 1193 | "source": { 1194 | "type": "git", 1195 | "url": "https://github.com/php-fig/http-server-handler.git", 1196 | "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" 1197 | }, 1198 | "dist": { 1199 | "type": "zip", 1200 | "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", 1201 | "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", 1202 | "shasum": "" 1203 | }, 1204 | "require": { 1205 | "php": ">=7.0", 1206 | "psr/http-message": "^1.0" 1207 | }, 1208 | "type": "library", 1209 | "extra": { 1210 | "branch-alias": { 1211 | "dev-master": "1.0.x-dev" 1212 | } 1213 | }, 1214 | "autoload": { 1215 | "psr-4": { 1216 | "Psr\\Http\\Server\\": "src/" 1217 | } 1218 | }, 1219 | "notification-url": "https://packagist.org/downloads/", 1220 | "license": [ 1221 | "MIT" 1222 | ], 1223 | "authors": [ 1224 | { 1225 | "name": "PHP-FIG", 1226 | "homepage": "http://www.php-fig.org/" 1227 | } 1228 | ], 1229 | "description": "Common interface for HTTP server-side request handler", 1230 | "keywords": [ 1231 | "handler", 1232 | "http", 1233 | "http-interop", 1234 | "psr", 1235 | "psr-15", 1236 | "psr-7", 1237 | "request", 1238 | "response", 1239 | "server" 1240 | ], 1241 | "support": { 1242 | "issues": "https://github.com/php-fig/http-server-handler/issues", 1243 | "source": "https://github.com/php-fig/http-server-handler/tree/master" 1244 | }, 1245 | "time": "2018-10-30T16:46:14+00:00" 1246 | }, 1247 | { 1248 | "name": "psr/http-server-middleware", 1249 | "version": "1.0.1", 1250 | "source": { 1251 | "type": "git", 1252 | "url": "https://github.com/php-fig/http-server-middleware.git", 1253 | "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" 1254 | }, 1255 | "dist": { 1256 | "type": "zip", 1257 | "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", 1258 | "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", 1259 | "shasum": "" 1260 | }, 1261 | "require": { 1262 | "php": ">=7.0", 1263 | "psr/http-message": "^1.0", 1264 | "psr/http-server-handler": "^1.0" 1265 | }, 1266 | "type": "library", 1267 | "extra": { 1268 | "branch-alias": { 1269 | "dev-master": "1.0.x-dev" 1270 | } 1271 | }, 1272 | "autoload": { 1273 | "psr-4": { 1274 | "Psr\\Http\\Server\\": "src/" 1275 | } 1276 | }, 1277 | "notification-url": "https://packagist.org/downloads/", 1278 | "license": [ 1279 | "MIT" 1280 | ], 1281 | "authors": [ 1282 | { 1283 | "name": "PHP-FIG", 1284 | "homepage": "http://www.php-fig.org/" 1285 | } 1286 | ], 1287 | "description": "Common interface for HTTP server-side middleware", 1288 | "keywords": [ 1289 | "http", 1290 | "http-interop", 1291 | "middleware", 1292 | "psr", 1293 | "psr-15", 1294 | "psr-7", 1295 | "request", 1296 | "response" 1297 | ], 1298 | "support": { 1299 | "issues": "https://github.com/php-fig/http-server-middleware/issues", 1300 | "source": "https://github.com/php-fig/http-server-middleware/tree/master" 1301 | }, 1302 | "time": "2018-10-30T17:12:04+00:00" 1303 | }, 1304 | { 1305 | "name": "symfony/polyfill-ctype", 1306 | "version": "v1.24.0", 1307 | "source": { 1308 | "type": "git", 1309 | "url": "https://github.com/symfony/polyfill-ctype.git", 1310 | "reference": "30885182c981ab175d4d034db0f6f469898070ab" 1311 | }, 1312 | "dist": { 1313 | "type": "zip", 1314 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", 1315 | "reference": "30885182c981ab175d4d034db0f6f469898070ab", 1316 | "shasum": "" 1317 | }, 1318 | "require": { 1319 | "php": ">=7.1" 1320 | }, 1321 | "provide": { 1322 | "ext-ctype": "*" 1323 | }, 1324 | "suggest": { 1325 | "ext-ctype": "For best performance" 1326 | }, 1327 | "type": "library", 1328 | "extra": { 1329 | "branch-alias": { 1330 | "dev-main": "1.23-dev" 1331 | }, 1332 | "thanks": { 1333 | "name": "symfony/polyfill", 1334 | "url": "https://github.com/symfony/polyfill" 1335 | } 1336 | }, 1337 | "autoload": { 1338 | "psr-4": { 1339 | "Symfony\\Polyfill\\Ctype\\": "" 1340 | }, 1341 | "files": [ 1342 | "bootstrap.php" 1343 | ] 1344 | }, 1345 | "notification-url": "https://packagist.org/downloads/", 1346 | "license": [ 1347 | "MIT" 1348 | ], 1349 | "authors": [ 1350 | { 1351 | "name": "Gert de Pagter", 1352 | "email": "BackEndTea@gmail.com" 1353 | }, 1354 | { 1355 | "name": "Symfony Community", 1356 | "homepage": "https://symfony.com/contributors" 1357 | } 1358 | ], 1359 | "description": "Symfony polyfill for ctype functions", 1360 | "homepage": "https://symfony.com", 1361 | "keywords": [ 1362 | "compatibility", 1363 | "ctype", 1364 | "polyfill", 1365 | "portable" 1366 | ], 1367 | "support": { 1368 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0" 1369 | }, 1370 | "funding": [ 1371 | { 1372 | "url": "https://symfony.com/sponsor", 1373 | "type": "custom" 1374 | }, 1375 | { 1376 | "url": "https://github.com/fabpot", 1377 | "type": "github" 1378 | }, 1379 | { 1380 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1381 | "type": "tidelift" 1382 | } 1383 | ], 1384 | "time": "2021-10-20T20:35:02+00:00" 1385 | }, 1386 | { 1387 | "name": "webmozart/assert", 1388 | "version": "1.10.0", 1389 | "source": { 1390 | "type": "git", 1391 | "url": "https://github.com/webmozarts/assert.git", 1392 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" 1393 | }, 1394 | "dist": { 1395 | "type": "zip", 1396 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", 1397 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", 1398 | "shasum": "" 1399 | }, 1400 | "require": { 1401 | "php": "^7.2 || ^8.0", 1402 | "symfony/polyfill-ctype": "^1.8" 1403 | }, 1404 | "conflict": { 1405 | "phpstan/phpstan": "<0.12.20", 1406 | "vimeo/psalm": "<4.6.1 || 4.6.2" 1407 | }, 1408 | "require-dev": { 1409 | "phpunit/phpunit": "^8.5.13" 1410 | }, 1411 | "type": "library", 1412 | "extra": { 1413 | "branch-alias": { 1414 | "dev-master": "1.10-dev" 1415 | } 1416 | }, 1417 | "autoload": { 1418 | "psr-4": { 1419 | "Webmozart\\Assert\\": "src/" 1420 | } 1421 | }, 1422 | "notification-url": "https://packagist.org/downloads/", 1423 | "license": [ 1424 | "MIT" 1425 | ], 1426 | "authors": [ 1427 | { 1428 | "name": "Bernhard Schussek", 1429 | "email": "bschussek@gmail.com" 1430 | } 1431 | ], 1432 | "description": "Assertions to validate method input/output with nice error messages.", 1433 | "keywords": [ 1434 | "assert", 1435 | "check", 1436 | "validate" 1437 | ], 1438 | "support": { 1439 | "issues": "https://github.com/webmozarts/assert/issues", 1440 | "source": "https://github.com/webmozarts/assert/tree/1.10.0" 1441 | }, 1442 | "time": "2021-03-09T10:59:23+00:00" 1443 | }, 1444 | { 1445 | "name": "webmozart/glob", 1446 | "version": "4.4.0", 1447 | "source": { 1448 | "type": "git", 1449 | "url": "https://github.com/webmozarts/glob.git", 1450 | "reference": "539b5dbc10021d3f9242e7a9e9b6b37843179e83" 1451 | }, 1452 | "dist": { 1453 | "type": "zip", 1454 | "url": "https://api.github.com/repos/webmozarts/glob/zipball/539b5dbc10021d3f9242e7a9e9b6b37843179e83", 1455 | "reference": "539b5dbc10021d3f9242e7a9e9b6b37843179e83", 1456 | "shasum": "" 1457 | }, 1458 | "require": { 1459 | "php": "^7.3 || ^8.0.0", 1460 | "webmozart/path-util": "^2.2" 1461 | }, 1462 | "require-dev": { 1463 | "phpunit/phpunit": "^9.5", 1464 | "symfony/filesystem": "^5.3" 1465 | }, 1466 | "type": "library", 1467 | "extra": { 1468 | "branch-alias": { 1469 | "dev-master": "4.1-dev" 1470 | } 1471 | }, 1472 | "autoload": { 1473 | "psr-4": { 1474 | "Webmozart\\Glob\\": "src/" 1475 | } 1476 | }, 1477 | "notification-url": "https://packagist.org/downloads/", 1478 | "license": [ 1479 | "MIT" 1480 | ], 1481 | "authors": [ 1482 | { 1483 | "name": "Bernhard Schussek", 1484 | "email": "bschussek@gmail.com" 1485 | } 1486 | ], 1487 | "description": "A PHP implementation of Ant's glob.", 1488 | "support": { 1489 | "issues": "https://github.com/webmozarts/glob/issues", 1490 | "source": "https://github.com/webmozarts/glob/tree/4.4.0" 1491 | }, 1492 | "time": "2021-10-07T16:13:08+00:00" 1493 | }, 1494 | { 1495 | "name": "webmozart/path-util", 1496 | "version": "2.3.0", 1497 | "source": { 1498 | "type": "git", 1499 | "url": "https://github.com/webmozart/path-util.git", 1500 | "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" 1501 | }, 1502 | "dist": { 1503 | "type": "zip", 1504 | "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", 1505 | "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", 1506 | "shasum": "" 1507 | }, 1508 | "require": { 1509 | "php": ">=5.3.3", 1510 | "webmozart/assert": "~1.0" 1511 | }, 1512 | "require-dev": { 1513 | "phpunit/phpunit": "^4.6", 1514 | "sebastian/version": "^1.0.1" 1515 | }, 1516 | "type": "library", 1517 | "extra": { 1518 | "branch-alias": { 1519 | "dev-master": "2.3-dev" 1520 | } 1521 | }, 1522 | "autoload": { 1523 | "psr-4": { 1524 | "Webmozart\\PathUtil\\": "src/" 1525 | } 1526 | }, 1527 | "notification-url": "https://packagist.org/downloads/", 1528 | "license": [ 1529 | "MIT" 1530 | ], 1531 | "authors": [ 1532 | { 1533 | "name": "Bernhard Schussek", 1534 | "email": "bschussek@gmail.com" 1535 | } 1536 | ], 1537 | "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", 1538 | "support": { 1539 | "issues": "https://github.com/webmozart/path-util/issues", 1540 | "source": "https://github.com/webmozart/path-util/tree/2.3.0" 1541 | }, 1542 | "abandoned": "symfony/filesystem", 1543 | "time": "2015-12-17T08:42:14+00:00" 1544 | }, 1545 | { 1546 | "name": "willdurand/negotiation", 1547 | "version": "3.0.0", 1548 | "source": { 1549 | "type": "git", 1550 | "url": "https://github.com/willdurand/Negotiation.git", 1551 | "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c" 1552 | }, 1553 | "dist": { 1554 | "type": "zip", 1555 | "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/04e14f38d4edfcc974114a07d2777d90c98f3d9c", 1556 | "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c", 1557 | "shasum": "" 1558 | }, 1559 | "require": { 1560 | "php": ">=7.1.0" 1561 | }, 1562 | "require-dev": { 1563 | "symfony/phpunit-bridge": "^5.0" 1564 | }, 1565 | "type": "library", 1566 | "extra": { 1567 | "branch-alias": { 1568 | "dev-master": "3.0-dev" 1569 | } 1570 | }, 1571 | "autoload": { 1572 | "psr-4": { 1573 | "Negotiation\\": "src/Negotiation" 1574 | } 1575 | }, 1576 | "notification-url": "https://packagist.org/downloads/", 1577 | "license": [ 1578 | "MIT" 1579 | ], 1580 | "authors": [ 1581 | { 1582 | "name": "William Durand", 1583 | "email": "will+git@drnd.me" 1584 | } 1585 | ], 1586 | "description": "Content Negotiation tools for PHP provided as a standalone library.", 1587 | "homepage": "http://williamdurand.fr/Negotiation/", 1588 | "keywords": [ 1589 | "accept", 1590 | "content", 1591 | "format", 1592 | "header", 1593 | "negotiation" 1594 | ], 1595 | "support": { 1596 | "issues": "https://github.com/willdurand/Negotiation/issues", 1597 | "source": "https://github.com/willdurand/Negotiation/tree/3.0.0" 1598 | }, 1599 | "time": "2020-09-25T08:01:41+00:00" 1600 | } 1601 | ], 1602 | "packages-dev": [], 1603 | "aliases": [], 1604 | "minimum-stability": "stable", 1605 | "stability-flags": { 1606 | "php-actions/example-private-repo": 20 1607 | }, 1608 | "prefer-stable": false, 1609 | "prefer-lowest": false, 1610 | "platform": [], 1611 | "platform-dev": [], 1612 | "plugin-api-version": "2.2.0" 1613 | } 1614 | -------------------------------------------------------------------------------- /src/Debug.php: -------------------------------------------------------------------------------- 1 | $value) { 8 | echo "$key => $value", PHP_EOL; 9 | } 10 | 11 | echo PHP_EOL; 12 | } 13 | } 14 | --------------------------------------------------------------------------------