maatify/common

Common DTOs and helpers for all maatify libraries

Installs: 833

Dependents: 5

Suggesters: 0

Security: 0

Stars: 1

Watchers: 0

Forks: 1

Open Issues: 0

pkg:composer/maatify/common

v2.0.0 2025-12-17 15:36 UTC

This package is auto-updated.

Last update: 2025-12-17 16:05:38 UTC


README

Maatify.dev

๐Ÿ“ฆ maatify/common

Version PHP License Status

Build PHPStan Code Quality

Monthly Downloads Total Downloads Stars

Changelog Security Full Docs Contributing

๐Ÿ Stable Release v2.0.0 โ€” Architectural Cleanup & Scope Stabilization

The core foundational library of the Maatify.dev ecosystem providing standardized DTOs, validation, sanitization, date/time, text utilities, and shared core helpers.

๐Ÿ“ฆ This is the stable version (v1.0.10) of maatify/common, released on 2025-12-09. ๐Ÿ”— ุจุงู„ุนุฑุจูŠ ๐Ÿ‡ธ๐Ÿ‡ฆ

๐Ÿงญ Version Information

Key Value
Version 2.0.0 Stable
Release Date 2025-12-17
PHP Requirement โ‰ฅ 8.2
License MIT
Coverage 98 %
Tests Passed 70+ (160+ Assertions)

๐Ÿงฉ Overview

This library provides reusable, framework-agnostic building blocks (DTOs, helpers, traits, enums, validators) shared across the Maatify ecosystem.

๐Ÿ“˜ Documentation & Release Files

File Description
/docs/README.full.md Full documentation (Phases 1โ€“13)
/docs/enums.md Enums & constants reference
CHANGELOG.md Version history (updated to 2.0.0)
CONTRIBUTING.md Contribution guidelines
VERSION Current version โ†’ 2.0.0

Core Modules:

  • ๐Ÿงฎ Pagination Helpers โ€” PaginationHelper, PaginationDTO, PaginationResultDTO Unified pagination structures for API responses and MySQL queries.

  • ๐Ÿงผ Security Sanitization โ€” InputSanitizer, SanitizesInputTrait Clean and escape user input safely with internal HTMLPurifier integration.

  • ๐Ÿง  Core Traits โ€” SingletonTrait, SanitizesInputTrait Reusable traits for singleton pattern, safe input handling, and shared helpers.

  • โœจ Text & Placeholder Utilities โ€” TextFormatter, PlaceholderRenderer, RegexHelper, SecureCompare Powerful text formatting, placeholder rendering, and secure string comparison tools.

  • ๐Ÿ•’ Date & Time Utilities โ€” DateFormatter, DateHelper Humanized difference, timezone conversion, and localized date rendering (EN/AR/FR).

  • ๐Ÿงฉ Validation & Filtering Tools โ€” Validator, Filter, ArrayHelper Email/URL/UUID/Slug validation, input detection, and advanced array cleanup utilities.

  • โš™๏ธ Enums & Constants Standardization โ€” TextDirectionEnum, MessageTypeEnum, ErrorCodeEnum, PlatformEnum, AppEnvironmentEnum, CommonPaths, CommonLimits, CommonHeaders, Defaults, EnumHelper Centralized enum and constant definitions ensuring consistent standards, reusable helpers, and unified configuration across all Maatify libraries.

โš ๏ธ Design Scope Notice

maatify/common is intentionally limited to pure helpers, DTOs, traits, enums, and shared utilities.

It contains no adapters, repositories, drivers, storage contracts, or IO-related abstractions. Any such responsibilities belong to dedicated infrastructure packages.

โš™๏ธ Installation

composer require maatify/common

๐Ÿ“ฆ Dependencies

This library directly relies on:

Dependency Purpose Link
ezyang/htmlpurifier Secure HTML/XSS sanitization engine github.com/ezyang/htmlpurifier
psr/log Standardized PSR-3 logging interface www.php-fig.org/psr/psr-3
phpunit/phpunit Unit testing framework (development only) phpunit.de

maatify/common integrates these open-source libraries to deliver a consistent and secure foundation for all other Maatify components.

๐Ÿง  Note: maatify/common automatically configures HTMLPurifier to use an internal cache directory at storage/purifier_cache for optimized performance. This ensures faster sanitization on subsequent calls without requiring manual setup.

If you wish to override the cache path, set the environment variable:

HTMLPURIFIER_CACHE_PATH=/path/to/custom/cache

or modify it programmatically via:

$config->set('Cache.SerializerPath', '/custom/cache/path');

๐Ÿง  SingletonTrait

A clean, PSR-friendly Singleton implementation to manage single-instance service classes safely.

๐Ÿ”น Example Usage

use Maatify\Common\Traits\SingletonTrait;

final class ConfigManager
{
    use SingletonTrait;

    public function get(string $key): ?string
    {
        return $_ENV[$key] ?? null;
    }
}

// โœ… Always returns the same instance
$config = ConfigManager::obj();

// โ™ป๏ธ Reset (for testing)
ConfigManager::reset();

โœ… Features

  • Prevents direct construction, cloning, and unserialization.
  • Provides static obj() to access the global instance.
  • Includes reset() for testing or reinitialization.

๐Ÿ“š Example Usage

๐Ÿ”น Paginate Array Data

use Maatify\Common\Pagination\Helpers\PaginationHelper;

$items = range(1, 100);

$result = PaginationHelper::paginate($items, page: 2, perPage: 10);

print_r($result);

Output:

[
    'data' => [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
    'pagination' => Maatify\Common\DTO\PaginationDTO {
        page: 2,
        perPage: 10,
        total: 100,
        totalPages: 10,
        hasNext: true,
        hasPrev: true
    }
]

๐Ÿ”น Working with PaginationDTO

use Maatify\Common\Pagination\DTO\PaginationDTO;

$pagination = new PaginationDTO(
    page: 1,
    perPage: 25,
    total: 200,
    totalPages: 8,
    hasNext: true,
    hasPrev: false
);

print_r($pagination->toArray());

๐Ÿงฉ Helpers

๐Ÿงฑ TapHelper

A lightweight, fluent utility for executing a callback on a given value (usually an object) and returning that same value unchanged โ€”
perfect for cleaner object initialization and inline setup.

โš™๏ธ Class

Maatify\Common\Helpers\TapHelper

โœ… Features

  • Executes a callback on a passed object or value.
  • Returns the same value (object, scalar, array, etc.).
  • Useful for chaining and fluent API style.
  • 100% pure function โ€” no side effects unless your callback modifies the object.

๐Ÿง  Example Usage

use Maatify\Common\Helpers\TapHelper;
use Maatify\DataAdapters\Adapters\MongoAdapter;

$config = new EnvironmentConfig(__DIR__ . '/../');

$mongo = TapHelper::tap(new MongoAdapter($config), fn($a) => $a->connect());

// $mongo is now a connected adapter
$client = $mongo->getConnection();

๐Ÿงพ Functional Philosophy

TapHelper follows a simple, expressive pattern inspired by functional programming:

Principle Description
๐Ÿงฉ Isolation The callback runs in isolation, returning no value.
๐Ÿ” Immutability The original object/value is returned unchanged.
๐Ÿงผ Clarity Reduces boilerplate for setup code.
๐Ÿง  Testability Simple to reason about and unit-test (see TapHelperTest).

๐Ÿงช Unit Test Reference

tests/Helpers/TapHelperTest.php

Covers:

  • Returning the same object instance.
  • Callback execution correctness.
  • Compatibility with scalars and arrays.
vendor/bin/phpunit --filter TapHelperTest

๐Ÿงฑ Code Reference

TapHelper::tap(mixed $value, callable $callback): mixed

Executes $callback($value) then returns $value.

๐Ÿงฉ Architectural Benefits within the Maatify Ecosystem

Aspect Benefit
โ™ป๏ธ Fluent Initialization Enables building adapters and services in one clean line.
๐Ÿง  Ecosystem Consistency Aligns with other helpers like PathHelper, EnumHelper, and TimeHelper.
๐Ÿงผ Reduced Boilerplate Replaces multiple setup lines with a single expressive call.
๐Ÿงฉ Universal Reusability Works seamlessly across all Maatify libraries (bootstrap, data-adapters, rate-limiter, redis-cache, etc.).

๐Ÿ“˜ Full Documentation: docs/enums.md

๐Ÿ—‚ Directory Structure

src/
โ”œโ”€โ”€ Pagination/
โ”‚   โ”œโ”€โ”€ DTO/
โ”‚   โ”‚   โ””โ”€โ”€ PaginationDTO.php
โ”‚   โ””โ”€โ”€ Helpers/
โ”‚       โ”œโ”€โ”€ PaginationHelper.php
โ”‚       โ””โ”€โ”€ PaginationResultDTO.php
โ”œโ”€โ”€ Helpers/
โ”‚   โ””โ”€โ”€ TapHelper.php
โ”œโ”€โ”€ Security/
โ”‚   โ””โ”€โ”€ InputSanitizer.php
โ”œโ”€โ”€ Traits/
โ”‚   โ”œโ”€โ”€ SingletonTrait.php
โ”‚   โ””โ”€โ”€ SanitizesInputTrait.php
โ”œโ”€โ”€ Text/
โ”‚   โ”œโ”€โ”€ PlaceholderRenderer.php
โ”‚   โ”œโ”€โ”€ TextFormatter.php
โ”‚   โ”œโ”€โ”€ RegexHelper.php
โ”‚   โ””โ”€โ”€ SecureCompare.php
โ”œโ”€โ”€ Date/
โ”‚   โ”œโ”€โ”€ DateFormatter.php
โ”‚   โ””โ”€โ”€ DateHelper.php
โ””โ”€โ”€ Validation/
    โ”œโ”€โ”€ Validator.php
    โ”œโ”€โ”€ Filter.php
    โ””โ”€โ”€ ArrayHelper.php
        Enums/
        โ”œโ”€โ”€ TextDirectionEnum.php
        โ”œโ”€โ”€ MessageTypeEnum.php
        โ”œโ”€โ”€ ErrorCodeEnum.php
        โ”œโ”€โ”€ PlatformEnum.php
        โ”œโ”€โ”€ AppEnvironmentEnum.php
        โ”œโ”€โ”€ EnumHelper.php
        โ””โ”€โ”€ Traits/
            โ””โ”€โ”€ EnumJsonSerializableTrait.php

๐Ÿ“š Built Upon

maatify/common proudly builds upon several mature and battle-tested open-source foundations:

Library Description Usage in Project
ezyang/htmlpurifier Standards-compliant HTML filtering library Powers InputSanitizer to ensure XSS-safe and standards-compliant HTML output with full Unicode support.
psr/log PSR-3 logging interface Enables standardized logging across sanitization, and validation components.
phpunit/phpunit PHP unit testing framework Provides automated testing with CI/CD GitHub workflow integration.

Huge thanks to the open-source community for their contributions, making the Maatify ecosystem secure, reliable, and extensible. โค๏ธ

โœ… ๐Ÿ“Š Updated Phase Summary Table (Phases 1 โ†’ 18)

Phase Title Status Files Created Notes
1 Pagination Module โœ… Completed 3 Pagination DTOs & helpers
3 Security & Input Sanitization โœ… Completed 3 InputCleaner, HTMLPurifier wrapper, XSS-safe normalizers
3b Core Traits โ€” Singleton System โœ… Completed 1 SingletonTrait implementation
4 Text & Placeholder Utilities โœ… Completed 8 PlaceholderRenderer, TextFormatter, RegexHelper, SecureCompare
5 Date & Time Utilities โœ… Completed 4 HumanizeDifference, LocalizedDateFormatter, Timestamp helpers
6 Validation & Filtering Tools โœ… Completed 3 Validator, Filter, ArrayHelper + full PHPUnit suite
7 Enums & Constants Standardization โœ… Completed 10 + 5 tests Unified Enum system, EnumHelper, JSONSerializableTrait, ValueEnum base
8 Testing & Release (v1.0.0) โœ… Completed 6 CHANGELOG, CONTRIBUTING, VERSION, README.full.md, CI integration, initial stable release
10 TapHelper Utility โœ… Completed 1 Introduced TapHelper + full test coverage
12 Version Hotfix โœ… Completed 1 Fixed version mismatch and updated VERSION file

โœ… Verified Test Results

PHPUnit 10.5.58 โ€” PHP 8.4.4
โ€ข Tests: 66 โ€ข Assertions: 150 โ€ข Coverage: ~98 %
โ€ข Runtime: 0.076 s โ€ข Memory: 12 MB
โ€ข Warnings: 1 (No coverage driver available โ€” safe to ignore)

All files have been verified and finalized as part of v2.0.0 Stable Release.

  • โœ… /docs/README.full.md โ€“ full documentation merged
  • โœ… /docs/enums.md โ€“ enums and constants reference
  • โœ… /docs/phases/README.phase7.md โ€“ phase documentation
  • โœ… CHANGELOG.md โ€“ release history initialized
  • โœ… CONTRIBUTING.md โ€“ contributor guide added
  • โœ… VERSION โ€“ version 2.0.0 confirmed

๐Ÿ”— Full documentation & release notes: see /docs/README.full.md

๐Ÿชช License

MIT license ยฉ Maatify.dev
Youโ€™re free to use, modify, and distribute this library with attribution.

๐Ÿงฑ Authors & Credits

This library is part of the Maatify.dev Core Ecosystem, designed and maintained under the technical supervision of:

๐Ÿ‘ค Mohamed Abdulalim โ€” Backend Lead & Technical Architect
Lead architect of the Maatify Backend Infrastructure, responsible for the overall architecture, core library design,
and technical standardization across all backend modules within the Maatify ecosystem.
๐Ÿ”— www.Maatify.dev | โœ‰๏ธ mohamed@maatify.dev

๐Ÿค Contributors:
The Maatify.dev Engineering Team and open-source collaborators who continuously help refine, test, and extend
the capabilities of this library across multiple Maatify projects.

๐Ÿงฉ This project represents a unified engineering effort led by Mohamed Abdulalim, ensuring every Maatify backend component
shares a consistent, secure, and maintainable foundation.

Built with โค๏ธ by Maatify.dev โ€” Unified Ecosystem for Modern PHP Libraries