| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
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. 🔗 بالعربي 🇸🇦
| 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) |
This library provides reusable, framework-agnostic building blocks (DTOs, helpers, traits, enums, validators) shared across the Maatify ecosystem.
| 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 |
🧮 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.
composer require maatify/commonThis 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/cacheor modify it programmatically via:
$config->set('Cache.SerializerPath', '/custom/cache/path');
A clean, PSR-friendly Singleton implementation to manage single-instance service classes safely.
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();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
}
]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());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.
Maatify\Common\Helpers\TapHelper
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();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). |
tests/Helpers/TapHelperTest.php
Covers:
vendor/bin/phpunit --filter TapHelperTestTapHelper::tap(mixed $value, callable $callback): mixedExecutes $callback($value) then returns $value.
| 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
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
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. ❤️
| 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 |
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.
🔗 Full documentation & release notes: see /docs/README.full.md
MIT license © Maatify.dev
You’re free to use, modify, and distribute this library with attribution.
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
| Back | FazBrowse Home | New Git URL |