Tipsy 2.0: PHP 8.3 modernization, Postgres-first, hot-path perf - #57
Conversation
Port the core to strict types and PHPUnit 11, replace Travis with GitHub Actions, document upgrades, and ship working examples plus a Hello World benchmark baseline while keeping zero runtime dependencies.
Use exact string matching for static routes, avoid reverse-array allocations, cache request methods, and slim DI/path parsing. Also stop PHPUnit coverage from following example path-repo symlinks.
Resource now emits dialect-aware SQL via quoteIdent, tests default to pgsql, and MysqlToPgsql remains an optional opt-in for raw MySQL SQL against Postgres.
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 35863986 | Triggered | Generic Password | b726b75 | .github/workflows/ci.yml | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secret safely. Learn here the best practices.
- Revoke and rotate this secret.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
Drop php -c (it wiped xdebug coverage), remove deprecated E_STRICT for PHP 8.4, use trust-auth Postgres (no hardcoded CI password), and rename travis DB configs to ci.
|
CI update: GitHub Actions is green across PHP 8.3/8.4 × pgsql/mysql (coverage on 8.3/pgsql). GitGuardian: the remaining failure is a false positive on historical commit |
Mirror the tish flow: matrix tests + coverage, semantic-release dry-run on master/main, GitHub prerelease, then Packagist publish when the prerelease is promoted.
|
CI/release pipeline (tish-style, PHP-adapted) is on
Docs: One-time secrets to add: |
Test results (PHPUnit)187 tests 181 ✅ 1s ⏱️ Results for commit 94da972. ♻️ This comment has been updated with latest results. |
Stock angular ignores feat!: (no type → no release). Switch Tipsy to the conventionalcommits preset and document BREAKING CHANGE footers as the reliable major trigger.
Db now keeps _tipsy from service construction, App always assigns tipsy on new services, underscore config keys are not copied onto instances, and sqlite connections accept path/database for a proper DSN.
Docker Hub timeouts were failing PHP 8.4/mysql before tests ran. Each matrix cell now starts only the DB it needs, via public.ecr.aws official mirrors.
Replace the old Coveralls/Slack status badges with GitHub Actions + Codecov.
Summary
Test plan
composer testlocally against Postgres and MySQLexamples/(COMPOSER_MIRROR_PATH_REPOS=1 composer install)ab -n 5000 -c 50againstbenchmarks/hello-world