codesaur / template
Энгийн текст-суурьтай темплейтээс эхлээд Twig-ээр бичсэн хүчирхэг темплейт хүртэл дэмждэг минимал, өргөтгөх боломжтой PHP template engine
Installs: 170
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/codesaur/template
Requires (Dev)
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2025-12-17 08:15:01 UTC
README
A lightweight and flexible PHP templating component for PHP 8.2.1 or newer.
codesaur/template нь codesaur Framework-ийн нэг хэсэг бөгөөд энгийн
текст-суурьтай темплейтээс эхлээд Twig-ээр бичсэн хүчирхэг темплейт хүртэл
дэмждэг минимал, өргөтгөх боломжтой PHP template engine юм.
Багц нь дараах 3 үндсэн class-аас бүрдэнэ:
- MemoryTemplate - энгийн {{key}} placeholder-той lightweight engine
- FileTemplate - файл суурьтай template loader
- TwigTemplate - Twig engine-тэй бүрэн интеграцлагдсан advanced renderer
CI/CD
Энэ төсөл нь GitHub Actions ашиглан автоматаар тест хийгддэг. CI/CD pipeline нь дараах зүйлсийг шалгана:
- ✅ PHP 8.2, 8.3, 8.4 дээр синтакс шалгалт
- ✅ Composer dependencies суурилуулалт
- ✅ PHP файлуудын синтакс алдаа шалгалт
- ✅ PHPUnit unit тестүүд ажиллуулах
CI/CD статусыг GitHub Actions хуудаснаас харж болно.
Онцлог
- 🟢
{{ key }},{{key}},{{ user.profile.email }}зэрэг бүх whitespace-тай/гүй форматыг дэмжинэ - 🟢 Nested variable support (олон түвшний массив)
- 🟢 Төгс override бүтэц - Memory → File → Twig
- 🟢 Twig filters, functions, globals бүрэн дэмжлэгтэй
- 🟢 Zero external dependencies (TwigTemplate ашигласан үед л Twig шаардлагатай)
- 🟢 Framework-agnostic тул codesaur, Laravel, Symfony, Slim болон бусад бүх PHP framework-тэй бүрэн нийцтэй
Суурилуулалт (Installation)
Composer ашиглан суулгах:
composer require codesaur/template
Ашиглах жишээ 1 - MemoryTemplate (simple)
use codesaur\Template\MemoryTemplate;
$template = new MemoryTemplate(
'Hello, {{ user.name }}!',
['user' => ['name' => 'Narankhuu']]
);
echo $template;
Output:
Hello, Narankhuu!
Ашиглах жишээ 2 - FileTemplate
use codesaur\Template\FileTemplate;
$template = new FileTemplate(__DIR__ . '/page.html', [
'title' => 'Hello Codesaur',
'message' => 'This is file-based templating.'
]);
echo $template->output();
Ашиглах жишээ 3 - TwigTemplate (Bootstrap ашигласан example)
example/index.php:
use codesaur\Template\TwigTemplate;
$template = new TwigTemplate(__DIR__ . '/example.html', [
'title' => 'Темплейтийн жишээ',
'menu' => ['Нүүр', 'Бидний тухай', 'Бүтээгдэхүүн', 'Холбоо барих'],
'items' => [
['title' => 'Хөнгөн жинтэй', 'text' => 'Хурдтай, энгийн ажиллагаатай темплейт систем.'],
['title' => 'Уян хатан', 'text' => 'Plain, File суурьтай болон Twig Template-үүдийг дэмжинэ.'],
['title' => 'Хүчирхэг', 'text' => 'Nested variable, Twig filters, functions ашиглах боломжтой.'],
]
]);
$template->render();
example/example.html:
<!doctype html> <html lang="mn"> <head> <meta charset="utf-8"> <title>{{ title }}</title> <meta name="viewport" content="width=device-width,initial-scale=1"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <body class="bg-light"> <nav class="navbar navbar-expand-lg navbar-dark bg-dark mb-4"> <div class="container"> <a class="navbar-brand" href="#">codesaur/template</a> <ul class="navbar-nav ms-auto"> {% for item in menu %} <li class="nav-item"><a href="#" class="nav-link text-uppercase">{{ item }}</a></li> {% endfor %} </ul> </div> </nav> <div class="container"> <div class="text-center mb-5"> <h1>{{ title }}</h1> <p class="text-muted">TwigTemplate болон Bootstrap ашигласан энгийн, цэвэр жишээ.</p> </div> <div class="row g-4"> {% for box in items %} <div class="col-md-4"> <div class="card shadow-sm border-0 h-100 text-center"> <div class="card-body"> <h4>{{ box.title }}</h4> <p class="text-muted">{{ box.text }}</p> </div> </div> </div> {% endfor %} </div> </div> <footer class="text-center text-muted mt-5 py-4"> <small>© {{ "now"|date("Y") }} codesaur framework</small> </footer> </body> </html>
Unit Test ажиллуулах (Running Unit Tests)
Энэ багц нь PHPUnit ашиглан бүрэн unit test-тэй. Test-үүдийг ажиллуулахын тулд:
1. Dependencies суулгах
composer install
Эсвэл зөвхөн dev dependencies:
composer install --dev
2. Test ажиллуулах
Windows (PowerShell эсвэл Command Prompt):
# PowerShell ашиглаж байгаа бол .\vendor\bin\phpunit # Эсвэл Command Prompt vendor\bin\phpunit.bat
Linux / macOS:
./vendor/bin/phpunit
Аль ч OS дээр (Composer ашиглан):
composer test
Coverage report үүсгэх:
composer test-coverage
3. Test coverage харах
Coverage report үүсгэхээсээ өмнө Xdebug суусан байх шаардлагатай. Xdebug coverage mode-ийг тохируулах:
Windows (PowerShell):
# Xdebug mode тохируулах $env:XDEBUG_MODE="coverage" # Coverage report үүсгэх .\vendor\bin\phpunit --coverage-html coverage # Эсвэл Composer script ашиглах composer test-coverage
Windows (Command Prompt):
REM Xdebug mode тохируулах set XDEBUG_MODE=coverage REM Coverage report үүсгэх vendor\bin\phpunit.bat --coverage-html coverage
Linux / macOS:
# Xdebug mode тохируулах export XDEBUG_MODE=coverage # Coverage report үүсгэх ./vendor/bin/phpunit --coverage-html coverage # Эсвэл Composer script ашиглах composer test-coverage
Анхаар: Хэрэв Xdebug суусан бол php.ini файлд дараах тохиргоо нэмнэ үү:
[xdebug] zend_extension=xdebug xdebug.mode=coverage,debug
Coverage report coverage/ фолдерт үүснэ. HTML файлыг браузер дээр нээж харж болно.
4. Тодорхой test файл ажиллуулах
Windows:
.\vendor\bin\phpunit tests/MemoryTemplateTest.php
Linux / macOS:
./vendor/bin/phpunit tests/MemoryTemplateTest.php
5. Тодорхой test method ажиллуулах
Windows:
.\vendor\bin\phpunit --filter testSimpleVariableReplacement tests/MemoryTemplateTest.php
Linux / macOS:
./vendor/bin/phpunit --filter testSimpleVariableReplacement tests/MemoryTemplateTest.php
Test файлууд
Unit Tests
tests/MemoryTemplateTest.php- MemoryTemplate классын unit testtests/FileTemplateTest.php- FileTemplate классын unit testtests/TwigTemplateTest.php- TwigTemplate классын unit test
Integration Tests
tests/Integration/TemplateIntegrationTest.php- Template classes-ийн integration test- Бодит файл системтэй ажиллах тест
- Олон template файлууд хамтдаа ажиллах тест
- Real-world scenarios тест
- Template inheritance chain тест
6. Integration test ажиллуулах
Integration test нь бодит файл системтэй ажиллах, олон template-үүд хамтдаа ажиллах зэрэг бодит use case-уудыг шалгана.
Windows:
.\vendor\bin\phpunit tests/Integration/
Linux / macOS:
./vendor/bin/phpunit tests/Integration/
Тодорхой integration test method ажиллуулах:
# Windows .\vendor\bin\phpunit --filter testRealWorldScenario tests/Integration/ # Linux / macOS ./vendor/bin/phpunit --filter testRealWorldScenario tests/Integration/
API Overview
MemoryTemplate
__construct(string $template = '', array $vars = [])set(string $key, $value)setVars(array $values)get(string $key)getVars(): arrayoutput(): string
FileTemplate
- MemoryTemplate API-г бүхэлд нь өвлөж авна
file(string $filepath)getFileSource(): stringoutput(): string
TwigTemplate
- FileTemplate-г өргөтгөнө
- Нэмэлт API:
getEnvironment(): EnvironmentaddGlobal(string $name, $value)addFilter(TwigFilter $filter)addFunction(TwigFunction $function)
Дэлгэрэнгүй API баримт бичиг: API.md файлыг үзнэ үү.
Баримт бичиг (Documentation)
Энэ багц нь дараах баримт бичгүүдтэй:
-
API.md - Бүрэн API баримт бичиг (Cursor AI автоматаар үүсгэсэн бөгөөд PHPDoc comment-ууд болон код судалгааны үндсэн дээр)
- Бүх класс, метод, параметр, return type-уудын дэлгэрэнгүй тайлбар
- Exception reference
- Ашиглалтын жишээнүүд
- Best practices
-
REVIEW.md - Code Review баримт бичиг (Cursor AI)
- Код сайжруулалтын тайлбар
- Test coverage report
- Code quality assessment
- Metrics болон дүгнэлт
Жишээ фолдер бүтэц
/example
index.php
example.html
/src
MemoryTemplate.php
FileTemplate.php
TwigTemplate.php
/tests
MemoryTemplateTest.php
FileTemplateTest.php
TwigTemplateTest.php
README.md
API.md
REVIEW.md
composer.json
phpunit.xml.dist
.github/workflows/ci.yml
LICENSE
Лиценз
Энэ төсөл MIT лицензтэй.
Зохиогч
Narankhuu
📧 codesaur@gmail.com
📱 +976 99000287
🌐 https://github.com/codesaur