One Core - Thư viện Laravel Core cho phát triển nhanh và bảo mật, được thiết kế để tương thích hoàn toàn với Laravel 11, Laravel 12 và Laravel Octane.
- ShortCode Engine: Hệ thống shortcode mạnh mẽ tương tự WordPress
- View Manager: Quản lý view và template với cache thông minh
- Cache Engine: Hệ thống cache đa lớp với auto-invalidation
- DCrypt Engine: Mã hóa/giải mã dữ liệu an toàn
- JSON Data Engine: Xử lý dữ liệu JSON hiệu quả
- Arr: Array wrapper với magic methods và helper functions
- Str: String utilities với hỗ trợ tiếng Việt
- Any: Universal data wrapper cho mọi kiểu dữ liệu
- Filemanager: Quản lý file và thư mục toàn diện
- File Methods: Các phương thức xử lý file nâng cao
- Zip Methods: Nén và giải nén file
- File Converter: Chuyển đổi định dạng file
- HTTP Client: HTTP client với Promise support
- CURL Wrapper: CURL utilities nâng cao
- Base API: Framework cho API development
- HTTP Promise: Promise-based HTTP requests
- HTML Builder: Tạo HTML elements programmatically
- Form Builder: Form generation với validation
- Menu Builder: Menu system linh hoạt
- Input Types: Input components đa dạng
- Base Repository: Repository pattern implementation
- CRUD Actions: CRUD operations tự động
- Filter Actions: Advanced filtering và searching
- Cache Tasks: Cache management cho repositories
- Validators: Validation system mở rộng
- Default Methods: Security utilities
- System Mail Alert: Email security alerts
- EventMethods: Hệ thống quản lý sự kiện mạnh mẽ
- Event Dispatcher: Event dispatching và handling
- Event Methods: Magic methods cho event management
- Multi-listener Support: Một event có thể có nhiều listeners
- Class-based Isolation: Mỗi class có vùng events riêng biệt
- Locale Management: Multi-language support
- Language Files: Dynamic language loading
- PHP: ^8.1
- Laravel: ^11.0 | ^12.0
- Laravel Octane: ^2.0 (tùy chọn)
composer require one/coreService Provider sẽ được tự động đăng ký thông qua Laravel's auto-discovery.
# Publish config file
php artisan vendor:publish --provider="One\Core\Providers\OneServiceProvider" --tag="one-config"
# Publish migrations
php artisan vendor:publish --provider="One\Core\Providers\OneServiceProvider" --tag="one-migrations"
# Hoặc publish tất cả
php artisan vendor:publish --provider="One\Core\Providers\OneServiceProvider"# Chạy migrations của thư viện
php artisan migrate
# Hoặc sử dụng command riêng
php artisan one:publish-migrations
php artisan migrateuse One\Core\Engines\ShortCode;
// Đăng ký shortcode
ShortCode::addShortcode('hello', function($atts, $content, $tag) {
return '<h2>Xin chào từ shortcode!</h2>';
});
// Sử dụng trong nội dung
$content = "Đây là nội dung. [hello] Và đây là nội dung sau.";
$result = ShortCode::do($content, false);use One\Core\Magic\Arr;
$data = new Arr(['name' => 'John', 'age' => 30]);
// Magic methods
echo $data->name; // John
echo $data->get('age'); // 30
echo $data->has('email'); // false
// Array operations
$data->set('email', 'john@example.com');
$data->remove('age');use One\Core\Files\Filemanager;
$fm = new Filemanager('/path/to/directory');
// File operations
$fm->saveHtml('index.html', '<h1>Hello World</h1>');
$content = $fm->getHtml('index.html');
// Directory operations
$files = $fm->getList();
$fm->copy('source.txt', 'destination.txt');use One\Core\Http\Client;
$client = new Client();
// GET request
$response = $client->get('https://api.example.com/users');
// POST request với data
$response = $client->post('https://api.example.com/users', [
'name' => 'John Doe',
'email' => 'john@example.com'
]);use One\Core\Repositories\BaseRepository;
class UserRepository extends BaseRepository
{
protected $model = User::class;
public function findByEmail($email)
{
return $this->model::where('email', $email)->first();
}
}use One\Core\Events\EventMethods;
class UserService
{
use EventMethods;
public function createUser($data)
{
// Đăng ký event listeners
static::on('user.creating', function($userData) {
// Validate trước khi tạo
return $userData;
});
static::on('user.created', function($user) {
// Gửi email chào mừng
Mail::to($user->email)->send(new WelcomeMail($user));
});
// Kích hoạt event trước khi tạo
$data = static::trigger('user.creating', $data);
$user = User::create($data);
// Kích hoạt event sau khi tạo
static::trigger('user.created', $user);
return $user;
}
}
// Sử dụng từ bên ngoài
UserService::on('user.created', function($user) {
// Log activity
Activity::log('user_created', $user);
});
// Kiểm tra event có tồn tại
if (UserService::hasEvent('user.created')) {
// Event đã được đăng ký
}
### Event System - Chi tiết kỹ thuật
EventMethods trait cung cấp hệ thống quản lý sự kiện hoàn chỉnh với các tính năng:
#### **Cấu trúc dữ liệu**
- **Class-based Isolation**: Mỗi class có vùng events riêng biệt
- **Multi-listener Support**: Một event có thể có nhiều listeners
- **Case-insensitive**: Event names tự động chuyển về lowercase
#### **Các phương thức chính**
- `_addEventListener()`: Đăng ký listener cho event
- `_dispatchEvent()`: Kích hoạt event và thực thi listeners
- `_removeEvent()`: Xóa event listeners
- `_eventExists()`: Kiểm tra event có tồn tại
- `callEventMethod()`: Router chính để gọi các method
#### **Magic Methods Support**
Trait được thiết kế để hoạt động với magic methods:
- `__callStatic()`: Xử lý static method calls
- `__call()`: Xử lý instance method calls
#### **Return Values**
- `_dispatchEvent()` trả về mảng kết quả từ tất cả listeners
- Các method khác trả về boolean hoặc void tùy theo chức năng
#### **Ví dụ sử dụng thực tế**
```php
class OrderService
{
use EventMethods;
public function processOrder($orderData)
{
// Đăng ký các event listeners
static::on('order.validating', function($data) {
// Validate order data
if (empty($data['items'])) {
throw new Exception('Order must have items');
}
return $data;
});
static::on('order.processing', function($order) {
// Update inventory
foreach ($order->items as $item) {
Inventory::decrease($item->product_id, $item->quantity);
}
});
static::on('order.completed', function($order) {
// Send confirmation email
Mail::to($order->customer_email)->send(new OrderConfirmation($order));
// Log activity
Activity::log('order_completed', $order);
});
// Kích hoạt validation event
$orderData = static::trigger('order.validating', $orderData);
// Tạo order
$order = Order::create($orderData);
// Kích hoạt processing event
static::trigger('order.processing', $order);
// Cập nhật trạng thái
$order->update(['status' => 'completed']);
// Kích hoạt completion event
static::trigger('order.completed', $order);
return $order;
}
}One Core được thiết kế để tương thích hoàn toàn với Laravel Octane:
use One\Core\Contracts\OctaneCompatible;
class MyService implements OctaneCompatible
{
private static $cache = [];
public static function resetStaticState(): void
{
self::$cache = [];
}
public function resetInstanceState(): void
{
// Reset instance state
}
public static function getStaticProperties(): array
{
return ['cache'];
}
}- WorkerStarting: Khởi tạo worker
- RequestReceived: Xử lý request mới
- RequestTerminated: Reset state sau request
| Method | Description |
|---|---|
ShortCode::addShortcode($tag, $callback) |
Đăng ký shortcode mới |
ShortCode::do($content, $ignore_html) |
Xử lý nội dung có shortcode |
ShortCode::hasShortcode($content, $tag) |
Kiểm tra shortcode có tồn tại |
ShortCode::removeShortcode($tag) |
Xóa shortcode |
| Method | Description |
|---|---|
$arr->get($key, $default) |
Lấy giá trị theo key |
$arr->set($key, $value) |
Gán giá trị |
$arr->has($key) |
Kiểm tra key có tồn tại |
$arr->remove($key) |
Xóa key |
$arr->merge($array) |
Merge với array khác |
| Method | Description |
|---|---|
$fm->saveHtml($filename, $content) |
Lưu file HTML |
$fm->getHtml($filename) |
Đọc file HTML |
$fm->copy($src, $dst) |
Copy file/thư mục |
$fm->move($src, $dst) |
Di chuyển file/thư mục |
$fm->delete($path) |
Xóa file/thư mục |
| Method | Description |
|---|---|
static::on($event, $closure) |
Đăng ký event listener |
static::addEventListener($event, $closure) |
Đăng ký event listener (alias) |
static::trigger($event, ...$params) |
Kích hoạt event |
static::fire($event, ...$params) |
Kích hoạt event (alias) |
static::emit($event, ...$params) |
Kích hoạt event (alias) |
static::hasEvent($event) |
Kiểm tra event có tồn tại |
static::eventExists($event) |
Kiểm tra event có tồn tại (alias) |
static::hasEventListener($event) |
Kiểm tra event có tồn tại (alias) |
static::removeEvent($event, $closure) |
Xóa event listener |
static::off($event, $closure) |
Xóa event listener (alias) |
static::removeEventListener($event, $closure) |
Xóa event listener (alias) |
composer testphp artisan test --filter=OctaneCompatibilityTest- Tất cả input được sanitize tự động
- SQL injection protection
- XSS protection
- CSRF protection
- Secure file operations
use One\Core\Languages\Locale;
// Set language
Locale::setLang('vi');
// Get translation
$message = Locale::get('welcome.message');src/
├── core/
│ ├── Async/ # Async/await utilities
│ ├── Concerns/ # Traits và shared functionality
│ ├── Contracts/ # Interfaces và contracts
│ ├── Console/ # Console commands
│ ├── Crawlers/ # Web crawling utilities
│ ├── Database/ # Database utilities
│ ├── Engines/ # Core engines (ShortCode, Cache, etc.)
│ ├── Events/ # Event system (EventMethods, EventDispatcher)
│ ├── Files/ # File management system
│ ├── Html/ # HTML builders và components
│ ├── Http/ # HTTP client và utilities
│ ├── Languages/ # Internationalization
│ ├── Laravel/ # Laravel integrations
│ ├── Magic/ # Magic classes (Arr, Str, Any)
│ ├── Mailer/ # Email system
│ ├── Masks/ # Data masking và transformation
│ ├── Models/ # Base models
│ ├── Promise/ # Promise utilities
│ ├── Providers/ # Service providers
│ ├── Queues/ # Queue management
│ ├── Repositories/ # Repository pattern implementation
│ ├── Services/ # Service classes
│ ├── System/ # System utilities
│ └── Validators/ # Validation system
├── helpers/ # Helper functions
└── tests/ # Test files
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: https://one.dev/docs
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@one.dev
Developed with ❤️ by the One Team
One Core - Empowering Laravel development with powerful tools and utilities.