Quality Tools Added: - PHPStan (Level 8) for static analysis - PHP_CodeSniffer (PSR-12) for code style - Updated PHPUnit test suite with type safety Code Improvements: - Fixed all PHPStan Level 8 errors (13 issues) - Auto-fixed 25 PSR-12 code style violations - Added proper type hints for arrays and method parameters - Fixed PDOStatement|false handling in api.php and tests - Improved null-safety for parse_url() calls Configuration: - phpstan.neon: Level 8, analyzes src/ and tests/ - phpcs.xml: PSR-12 standard, excludes vendor/ - docker-compose.yml: Mount config files for tooling - composer.json: Add phpstan, phpcs, phpcbf scripts Documentation: - Updated README.md with testing and quality sections - Updated AGENTS.md with quality gates and workflows - Added pre-commit checklist for developers All tests pass (9/9), PHPStan clean (0 errors), PHPCS compliant (1 warning) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
63 lines
1.3 KiB
YAML
63 lines
1.3 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
php:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: php_app
|
|
ports:
|
|
- "8080:80"
|
|
volumes:
|
|
- ./src:/var/www/html
|
|
- ./tests:/var/www/tests
|
|
- ./composer.json:/var/www/composer.json
|
|
- ./composer.lock:/var/www/composer.lock
|
|
- ./phpstan.neon:/var/www/phpstan.neon
|
|
- ./phpcs.xml:/var/www/phpcs.xml
|
|
- ./config/nginx/default.conf:/etc/nginx/conf.d/default.conf
|
|
depends_on:
|
|
- mariadb
|
|
networks:
|
|
- app-network
|
|
|
|
mariadb:
|
|
image: mariadb:11.5
|
|
container_name: mariadb_db
|
|
restart: unless-stopped
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: root_password
|
|
MYSQL_DATABASE: app_database
|
|
MYSQL_USER: app_user
|
|
MYSQL_PASSWORD: app_password
|
|
ports:
|
|
- "3307:3306"
|
|
volumes:
|
|
- mariadb_data:/var/lib/mysql
|
|
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
|
|
networks:
|
|
- app-network
|
|
|
|
phpmyadmin:
|
|
image: phpmyadmin:latest
|
|
container_name: phpmyadmin
|
|
restart: unless-stopped
|
|
environment:
|
|
PMA_HOST: mariadb
|
|
PMA_PORT: 3306
|
|
MYSQL_ROOT_PASSWORD: root_password
|
|
ports:
|
|
- "8081:80"
|
|
depends_on:
|
|
- mariadb
|
|
networks:
|
|
- app-network
|
|
|
|
networks:
|
|
app-network:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
mariadb_data:
|
|
driver: local
|