Skip to content

PHP 7.4 to 8.5 support, PHPUnit 9 to 11, MySQL 8 CI, GitHub Actions replacing Travis, modernized test infrastructure, and fork-specific PEAR packaging

Choose a tag to compare

@tbl0605 tbl0605 released this 19 Jun 16:16
· 24 commits to master since this release

Overview

This release modernizes the fork for PHP 7.4 through 8.5, replaces legacy Travis CI with GitHub Actions, and brings the full PHPUnit suite (2,664 tests) back to green on current PHP and MySQL 8. Pervasive DB support from 1.7.14 is retained; the focus here is compatibility, testing, packaging, and project maintenance.


Requirements (breaking changes)

1.7.14 master
PHP 5.2.4 7.4
Phing ~2.4 ^2.17
PHPUnit (dev) ~4 / ~5 ^9.6 || ^10.5 || ^11

Composer package metadata, propel-gen binaries, and composer test / composer test:setup scripts are updated accordingly.


PHP 8.x compatibility

Broad fixes across generator and runtime for PHP 8.0 to 8.5:

  • Nullable / strict typing e.g. reverse schema parsers, adapters, builders
  • Deprecated PHP behaviors continue in switch (PgsqlPlatform), ArrayIterator backed by objects, null-safe handling in Criteria, Column, formatters, collections, strftime-style format, etc.
  • Generated code templates behavior builders (archivable, i18n, nested set, sortable, versionable, sluggable, ...) updated so generated models/peers/queries work on modern PHP
  • OM / query layer Criteria, Criterion, ModelCriteria, formatters, BasePeer, PropelDateTime, YAML/XML parsers

Testing & CI

  • Removed legacy .travis.yml (PHP 5.3 to 5.5 / HHVM)
  • Added GitHub Actions workflows under .github/workflows/:
    • phpunit.yml PHPUnit on PHP 7.4 to 8.5 + PHPUnit 9 / 10 / 11, MySQL 8 service, fixture reset, sql_mode tuning for legacy GROUP BY tests
    • pear-package.yml builds legacy PEAR .tgz packages on push and GitHub releases (see PEAR packaging below)
  • New test infrastructure:
    • test/setup_mysql_databases.php auto-creates fixture DBs, configures MySQL 8 sql_mode
    • test/reset_tests.sh / reset_tests.cmd MySQL setup, skip reverse/ in main loop, Windows parity
    • PropelTestCase PHPUnit 9 to 11 bridge (legacy @expectedException, mocking APIs, etc.)
    • Dual PHPUnit annotations for forward compatibility
  • 152 test files updated; full suite passes on PHP 8.5 + PHPUnit 11

PEAR packaging

  • New .github/workflows/pear-package.yml GitHub Actions workflow (runs on push and when a GitHub release is published)
  • Builds legacy propel_generator and propel_runtime .tgz artifacts via Phing 2.17.4 on PHP 7.4
  • Fork-specific packaging: __uri channel instead of dead pear.propelorm.org; removed pear.phing.info dependency (Phing via Composer); minimum PHP 7.4 in package.xml
  • test/tools/run_pear_package_build.sh wrapper for reproducible PEAR builds

Pervasive DB

No major new Pervasive features since 1.7.14. Status unchanged:

  • Known limitations (pagination offset, LOB hex inlining, FK SET NULL, type maps, column ordering) remain
  • Minor touch-ups to PervasivePlatform, PervasiveSchemaParser, and DBPervasive (mostly line-ending normalization and PHP compatibility).

Project & documentation

  • README fork identity, Composer install, test instructions, GitHub Actions badge
  • INSTALL Composer-first install; PEAR via GitHub release artifacts
  • CHANGELOG stub for 1.8.0
  • .gitignore fixture builds, CI PHARs, IDE files, PHPUnit cache
  • .gitattributes LF line endings for cross-platform consistency (Windows test stability)
  • Composer tbl0605/propel1-pervasive metadata, Thierry Blind as contributor

Upgrade notes

  1. Requires PHP 7.4+ (PHP 8.x recommended).
  2. Run composer update and rebuild generated classes if you upgrade an existing project.
  3. For tests: composer test:setup, then test/reset_tests.sh (or test\reset_tests.cmd on Windows), then composer test.
  4. PEAR users: install from GitHub release .tgz files, not pear.propelorm.org.