# WT_FrameWork
**Repository Path**: wfdaj/WT_FrameWork
## Basic Information
- **Project Name**: WT_FrameWork
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-05-05
- **Last Updated**: 2026-05-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# WT Framework — PHP Edition
WT Framework - PHP Edition v1.1
---
## Overview
A lightweight, secure PHP MVC framework built for rapid web application development. Clean architecture, minimal dependencies, and production-ready security out of the box.
---
## Features
- MVC Architecture (Model, View, Controller)
- Built-in Security (XSS, SQL Injection, CSRF protection)
- Multi-language support (AR & EN with easy extension)
- Smarty Template Engine integration
- Zero Composer dependency (optional)
- Lightweight & fast with minimal overhead
- PDO-based ORM with Singleton connection
- AES-256-CBC encryption built-in
- Email sending with header injection protection
- Image upload, compression & validation
- Automatically minifies HTML, CSS, and JS output with zero configuration.
### Minification Results
```
HTML: 47KB → 31KB (~34% smaller)
CSS: 28KB → 18KB (~36% smaller)
JS: 95KB → 61KB (~36% smaller)
```
---
## 📋 Requirements
- PHP 8.2+
- MySQL 5.7+
- Apache with mod_rewrite enabled
- cURL enabled
---
## Getting Started
### Installation
**1. Clone the repository**
```bash
git clone https://github.com/wondtech/wt-framework.git
cd wt-framework
```
**2. Configure environment**
```bash
cp .env.example .env
```
Edit `.env`:
```env
# Database
DB_HOST=127.0.0.1
DB_NAME=your_database
DB_USER=root
DB_PASSWORD=
# Mail
MAIL_APP_NAME=WT App
MAIL_SEND_EMAIL=info@example.com
MAIL_GET_EMAIL=notif@example.com
# Application
APP_ENV=development
APP_URL=http://localhost
APP_SECRET_KEY=your-strong-secret-key
APP_CACHE=false
```
**3. Set permissions**
```bash
chmod 755 wt/template/temp_sys/cache
chmod 755 wt/template/temp_sys/templates_c
```
---
## Project Structure
```
project/
├── .env ← Environment variables
├── .env.example ← Environment template
├── .htaccess ← URL rewriting & security rules
├── index.php ← Entry point
├── pub_wt/ ← Public assets
│ ├── css/ ← Stylesheets
│ ├── js/ ← JavaScript files
│ ├── imgs/ ← Images
│ └── fonts/ ← Fonts
└── wt/
├── controllers/ ← Application controllers
├── models/ ← Database models
├── libs/ ← Framework core
│ ├── wt_auto.php ← Autoloader
│ ├── wt_config.php ← App configuration
│ ├── wt_controller.php ← Base controller
│ ├── wt_db.php ← Database (PDO Singleton)
│ ├── wt_env.php ← .env loader
│ ├── wt_front.php ← Front controller (Router)
│ ├── wt_helper.php ← Helper trait
│ ├── wt_model.php ← Base model (ORM)
│ ├── wt_sec.php ← Security trait
│ ├── wt_send.php ← Mail trait
│ └── wt_smarty.php ← Smarty wrapper
├── lang/ ← Language files
│ ├── wt_lang.php
│ ├── wt_ar.php
│ └── wt_en.php
└── template/ ← Smarty templates
```
---
## Creating a Controller
```php
view();
$tpl->assign('title', 'Welcome');
$tpl->view('home.tpl');
}
public function About_Action(): void
{
$tpl = $this->view();
$tpl->view('about.tpl');
}
}
```
URL mapping:
```
/ or /home → Home_Controller::Index_Action
/home/index → Home_Controller::About_Action
/home/index/1/2 → Home_Controller::About_Action + params [1, 2]
```
---
## Creating a Model
```php
self::DATA_TYPE_STR,
'content' => self::DATA_TYPE_STR,
'created_at' => self::DATA_TYPE_STR,
'is_active' => self::DATA_TYPE_BOOL,
];
}
```
Usage:
```php
// INSERT
$post = new Post_Model();
$post->title = 'Hello World';
$post->content = 'My first post';
$id = $post->wt_save(); // returns new ID
// SELECT by primary key
$post = Post_Model::wt_getByPkey(1);
// SELECT with conditions
$posts = Post_Model::wt_getData(
'WHERE is_active = :active ORDER BY id DESC',
[':active' => [PDO::PARAM_INT, 1]],
10, // items per page
1 // page number
);
// UPDATE
$post->title = 'Updated Title';
$post->wt_save();
// DELETE
$post->wt_delete();
Post_Model::wt_deleteByPkey(1);
// COUNT
$total = Post_Model::wt_countData('WHERE is_active = :active', [':active' => [PDO::PARAM_INT, 1]]);
// TRANSACTION
Wt_Model::wt_transaction(function() use ($post, $log) {
$post->wt_save();
$log->wt_save();
});
```
---
## Multi-language
Add keys to `wt_ar.php` and `wt_en.php`:
```php
$this->Lang['welcome'] = 'مرحباً'; // AR
$this->Lang['welcome'] = 'Welcome'; // EN
```
Switch language via URL:
```
/?lang=AR
/?lang=EN
```
Use in Smarty template:
```smarty
{$welcome}
```
---
## Security Usage
```php
use WT\LIBS\Wt_Sec;
class My_Controller extends Wt_Controller
{
use Wt_Sec;
public function Index_Action(): void
{
// Input sanitization
$name = $this->Wt_SecInput($_POST['name'], 'str');
$email = $this->Wt_SecInput($_POST['email'], 'email');
$age = $this->Wt_SecInput($_POST['age'], 'int');
// Encryption
$encoded = $this->Wt_Encode('sensitive data');
$decoded = $this->Wt_Decode($encoded);
// Captcha
$tpl->assign('captcha', $this->Wt_CrtCap());
$tpl->assign('capImg', $this->Wt_DrwCap());
}
}
```
---
## Security Features
| Feature | Implementation |
|---|---|
| SQL Injection | PDO prepared statements |
| XSS | `htmlspecialchars` on all outputs |
| Path Traversal | `realpath` validation in autoloader |
| Open Redirect | Host validation in `Wt_ReDir` |
| Header Injection | `\r\n` stripping in mail headers |
| Encryption | AES-256-CBC via OpenSSL |
| File Upload | MIME type validation via `finfo` |
| Captcha | `random_int` secure generation |
---
## License
© 2026 WT Framework — PHP Edition 1.1 — Built by [WondTech](https://wondtech.com). All rights reserved.