codeit / base
CodeIT Laminas base utilities, cache, validators, forms, and MVC helpers.
Requires
- php: >=8.1
- ext-json: *
- ext-mbstring: *
- laminas/laminas-cli: ^1.15
- laminas/laminas-db: ^2.21
- laminas/laminas-eventmanager: ^3.13
- laminas/laminas-filter: ^2.38
- laminas/laminas-form: ^3.22
- laminas/laminas-http: ^2.21
- laminas/laminas-inputfilter: ^2.30
- laminas/laminas-router: ^3.14
- laminas/laminas-servicemanager: ^3.22 || ^4.4
- laminas/laminas-validator: ^2
- laminas/laminas-view: ^2.37
- psr/container: ^1.1 || ^2.0
Requires (Dev)
- laminas/laminas-mvc: ^3.8
- phpunit/phpunit: ^10.5 || ^11.0 || ^12.0
- squizlabs/php_codesniffer: ^3.10
Suggests
- ext-redis: Required when using CodeIT\Cache\RedisWrapper.
- laminas/laminas-mvc: Required only for the optional MVC controllers and plugins (^3.8).
Provides
None
Conflicts
None
Replaces
None
- dev-master
- dev-main
- 2.2.0
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.1.0
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.15
- 0.3.14
- 0.3.13
- 0.3.12
- 0.3.11
- 0.3.10
- 0.3.9
- 0.3.8
- 0.3.7
- 0.3.6
- 0.3.5
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.12
- 0.2.11
- 0.2.10
- 0.2.9
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.15
- 0.1.13
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- 0.0.6
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- dev-feature/cached-find
- dev-dev-alex
- dev-alex
This package is auto-updated.
Last update: 2026-11-04 23:22:26 UTC
README
Reusable CodeIT base utilities for Laminas applications.
Requirements
- PHP
^8.1 - Laminas MVC
^3.8only when using the optional MVC controllers and plugins - Current Laminas component packages for DB, forms, filters, validators, view helpers, and service manager
The package intentionally allows PHP 8.1+ instead of pinning to PHP 8.3/8.4. Applications can run it on PHP 8.3 while libraries and CI can still cover PHP 8.1 and 8.2 where the Laminas dependency set supports them.
Mezzio and other PSR-15 applications (2.2.0+)
Models, caching, forms, and utilities can be used without installing Laminas MVC.
Mezzio is supplied by the consuming application; this library does not require an HTTP framework.
Wire the existing dbAdapter and cache services into your PSR container and register it as
CodeIT\Utils\Registry::set('sm', $container) for the model infrastructure.
Use CodeIT\Model\AppTable, CachedTable, and LocalizableTable directly as before.
The complete-row cache, cached list invalidation, and multilingual behavior are unchanged.
Applications using CodeIT\Controller or CodeIT\Controller\Plugin must explicitly install
laminas/laminas-mvc:^3.8. MVC remains a development dependency so the existing adapters
continue to be tested. Applications removing a Composer package override can use this
repository's Composer metadata directly.
What Changed In 2.0
- Zend Framework namespaces were migrated to Laminas namespaces.
zendframework/*dependencies were replaced withlaminas/*.- Existing
Application\*integration points are preserved for backward compatibility. - The legacy user creation command was ported to
laminas-cli. - Controllers accept
Psr\Container\ContainerInterface. - PHPUnit configuration and unit tests were added.
Console Commands
The user creation command is registered for laminas-cli:
vendor/bin/laminas user:create user@example.com secret-password admin
The command preserves the legacy create-user contract: email, password, and optional level.
Applications that have a password field or password setter on Application\Model\User receive the password through setData().
SSO-only applications can ignore it at the model/schema level.
ACL
CodeIT\ACL\Authentication keeps using Application\Lib\Acl and the existing call(string $method, array $args) ACL API.
Documentation
- CodeIT Base Reference describes the package structure, controllers, ACL integration, cache services, table models, form classes, and view helpers.
Tests
composer install
composer cs
composer test
composer test also runs tests/Smoke, which exercises AppTable/CachedTable
against a real database (admin vs. client $publicOnly reads, and writes that
must invalidate the cache) instead of the stubs the rest of the suite uses. It
skips itself when no database is reachable.
docker compose up -d # MariaDB on localhost:3306, Redis on localhost:16379 composer test:smoke SMOKE_DB=sqlite composer test:smoke # no docker: in-memory SQLite instead SMOKE_CACHE=redis SMOKE_REDIS_PORT=16379 composer test:smoke # cache reads/invalidation through real Redis (needs ext-redis)
Coding Standard
All hand-maintained PHP source and tests must follow PSR-12. Run composer cs before committing and
composer cs:fix for safe mechanical formatting.