forked from webshr/core
initial commit
This commit is contained in:
332
README.md
Normal file
332
README.md
Normal file
@@ -0,0 +1,332 @@
|
||||
# Lichtblick Core
|
||||
|
||||
A modern, modular framework for WordPress projects built with PHP 8.1+ and inspired by Laravel's architecture.
|
||||
|
||||
## Overview
|
||||
|
||||
Lichtblick Core is a lightweight yet powerful framework designed specifically for WordPress development. It provides a clean, object-oriented approach to building WordPress themes and plugins with modern PHP features, dependency injection, and a modular architecture.
|
||||
|
||||
## Features
|
||||
|
||||
- **Modern PHP Architecture**: Built with PHP 8.1+ using PSR-4 autoloading
|
||||
- **Modular System**: Extensible module-based architecture for clean code organization
|
||||
- **Asset Management**: Comprehensive asset handling with manifest support and bundling
|
||||
- **Dependency Injection**: Service container for managing dependencies and bindings
|
||||
- **Encryption & Security**: Built-in encryption utilities with multiple cipher support
|
||||
- **Configuration Management**: Flexible configuration system with environment support
|
||||
- **Helper Functions**: Rich set of utility functions for common WordPress tasks
|
||||
- **String Utilities**: Comprehensive string manipulation helpers
|
||||
- **Filesystem Abstraction**: Clean filesystem operations with proper error handling
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
composer require lb/core
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Basic Setup
|
||||
|
||||
```php
|
||||
<?php
|
||||
// functions.php or your theme's bootstrap file
|
||||
|
||||
use Lichtblick\Core\Bootloader;
|
||||
|
||||
// Initialize the framework
|
||||
$bootloader = Bootloader::get_instance();
|
||||
$bootloader->boot();
|
||||
```
|
||||
|
||||
### Using the Application Container
|
||||
|
||||
```php
|
||||
use Lichtblick\Core\app;
|
||||
|
||||
// Get the application instance
|
||||
$app = app();
|
||||
|
||||
// Resolve services from the container
|
||||
$encryption = app('encryption');
|
||||
$assets = app('assets');
|
||||
```
|
||||
|
||||
## Core Components
|
||||
|
||||
### Application Container
|
||||
|
||||
The `Application` class serves as the main service container and communication hub:
|
||||
|
||||
```php
|
||||
use Lichtblick\Core\Application;
|
||||
|
||||
$app = new Application();
|
||||
|
||||
// Bind services
|
||||
$app->instance('my-service', new MyService());
|
||||
|
||||
// Resolve services
|
||||
$service = $app->make('my-service');
|
||||
|
||||
// Register singletons
|
||||
$app->singleton('database', Database::class);
|
||||
```
|
||||
|
||||
### Module System
|
||||
|
||||
Create modular functionality using the module system:
|
||||
|
||||
```php
|
||||
use Lichtblick\Core\Module;
|
||||
|
||||
class MyModule extends Module
|
||||
{
|
||||
public function register(): void
|
||||
{
|
||||
// Register WordPress hooks, services, etc.
|
||||
add_action('init', [$this, 'init']);
|
||||
}
|
||||
|
||||
public function boot(): void
|
||||
{
|
||||
// Boot logic after registration
|
||||
}
|
||||
|
||||
public function can_register(): bool
|
||||
{
|
||||
return true; // Conditional registration
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Asset Management
|
||||
|
||||
Handle assets with manifest support and bundling:
|
||||
|
||||
```php
|
||||
use Lichtblick\Core\asset;
|
||||
use Lichtblick\Core\bundle;
|
||||
|
||||
// Get individual assets
|
||||
$css = asset('styles/main.css');
|
||||
$js = asset('scripts/app.js');
|
||||
|
||||
// Get asset bundles
|
||||
$mainBundle = bundle('main');
|
||||
|
||||
// Enqueue CSS files
|
||||
$mainBundle->css(function($handle, $src) {
|
||||
wp_enqueue_style($handle, $src);
|
||||
});
|
||||
|
||||
// Enqueue JS files
|
||||
$mainBundle->js(function($handle, $src, $deps) {
|
||||
wp_enqueue_script($handle, $src, $deps);
|
||||
});
|
||||
```
|
||||
|
||||
### Encryption Utilities
|
||||
|
||||
Secure data with built-in encryption:
|
||||
|
||||
```php
|
||||
use Lichtblick\Core\encrypt;
|
||||
use Lichtblick\Core\decrypt;
|
||||
|
||||
// Encrypt data
|
||||
$encrypted = encrypt('sensitive data');
|
||||
|
||||
// Decrypt data
|
||||
$decrypted = decrypt($encrypted);
|
||||
|
||||
// String-specific encryption (no serialization)
|
||||
$encrypted = encrypt_string('plain text');
|
||||
$decrypted = decrypt_string($encrypted);
|
||||
```
|
||||
|
||||
### String Utilities
|
||||
|
||||
Rich string manipulation helpers:
|
||||
|
||||
```php
|
||||
use Lichtblick\Core\Support\Str;
|
||||
|
||||
// String operations
|
||||
Str::contains('Hello World', 'World'); // true
|
||||
Str::starts_with('Hello World', 'Hello'); // true
|
||||
Str::ends_with('Hello World', 'World'); // true
|
||||
|
||||
// String extraction
|
||||
Str::before('user@example.com', '@'); // 'user'
|
||||
Str::after('user@example.com', '@'); // 'example.com'
|
||||
Str::between('Hello [World]', '[', ']'); // 'World'
|
||||
|
||||
// Pattern matching
|
||||
Str::is('admin/*', 'admin/users'); // true
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Environment Configuration
|
||||
|
||||
The framework supports environment-based configuration:
|
||||
|
||||
```php
|
||||
// config/app.php
|
||||
return [
|
||||
'paths' => [
|
||||
'base' => get_template_directory(),
|
||||
'config' => get_template_directory() . '/config',
|
||||
'resources' => get_template_directory() . '/resources',
|
||||
'storage' => get_template_directory() . '/storage',
|
||||
],
|
||||
'modules' => [
|
||||
'theme' => ThemeModule::class,
|
||||
'assets' => AssetModule::class,
|
||||
],
|
||||
'cipher' => 'aes-256-cbc',
|
||||
'key' => env('APP_KEY'),
|
||||
];
|
||||
```
|
||||
|
||||
### Asset Configuration
|
||||
|
||||
Configure asset manifests and bundles:
|
||||
|
||||
```php
|
||||
// config/assets.php
|
||||
return [
|
||||
'default' => 'main',
|
||||
'manifests' => [
|
||||
'main' => [
|
||||
'path' => get_template_directory() . '/dist',
|
||||
'url' => get_template_directory_uri() . '/dist',
|
||||
'assets' => get_template_directory() . '/dist/manifest.json',
|
||||
'bundles' => get_template_directory() . '/dist/bundles.json',
|
||||
],
|
||||
],
|
||||
];
|
||||
```
|
||||
|
||||
## Helper Functions
|
||||
|
||||
The framework provides numerous helper functions:
|
||||
|
||||
```php
|
||||
// Application helpers
|
||||
app(); // Get application instance
|
||||
bootloader(); // Get bootloader instance
|
||||
|
||||
// Asset helpers
|
||||
asset('path/to/file.css');
|
||||
bundle('main');
|
||||
meta('path/to/file.json');
|
||||
|
||||
// Module helpers
|
||||
module('theme');
|
||||
|
||||
// Security helpers
|
||||
encrypt($data);
|
||||
decrypt($payload);
|
||||
hash($data);
|
||||
check($data, $hash);
|
||||
|
||||
// WordPress helpers
|
||||
add_actions(['init', 'wp_enqueue_scripts'], $callback);
|
||||
add_filters(['the_content', 'the_title'], $callback);
|
||||
require_files('/path/to/directory');
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
### Directory Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── Application.php # Main application container
|
||||
├── Bootloader.php # Application bootstrapper
|
||||
├── Module.php # Base module class
|
||||
├── Assets/ # Asset management system
|
||||
│ ├── Manager.php # Asset manager
|
||||
│ ├── Manifest.php # Asset manifest handler
|
||||
│ ├── Bundle.php # Asset bundle handler
|
||||
│ └── Asset/ # Asset types
|
||||
├── Modules/ # Module system
|
||||
│ ├── Manager.php # Module manager
|
||||
│ └── Contracts/ # Module interfaces
|
||||
├── Support/ # Support utilities
|
||||
│ ├── Str.php # String utilities
|
||||
│ └── Traits/ # Reusable traits
|
||||
├── Utility/ # Utility classes
|
||||
│ ├── Encryption.php # Encryption utilities
|
||||
│ └── Hash.php # Hashing utilities
|
||||
├── Config/ # Configuration management
|
||||
├── Filesystem/ # Filesystem abstraction
|
||||
└── Contracts/ # Framework interfaces
|
||||
```
|
||||
|
||||
### Key Design Patterns
|
||||
|
||||
- **Service Container**: Dependency injection and service resolution
|
||||
- **Module Pattern**: Extensible, modular architecture
|
||||
- **Manager Pattern**: Centralized management of resources
|
||||
- **Factory Pattern**: Asset creation and instantiation
|
||||
- **Strategy Pattern**: Pluggable encryption and hashing algorithms
|
||||
|
||||
## Requirements
|
||||
|
||||
- PHP 8.1 or higher
|
||||
- WordPress 5.0 or higher
|
||||
- Composer for dependency management
|
||||
|
||||
## Dependencies
|
||||
|
||||
- `psr/container`: PSR-11 container interface
|
||||
- `phpunit/phpunit`: Testing framework (dev)
|
||||
- `squizlabs/php_codesniffer`: Code quality (dev)
|
||||
- `wp-coding-standards/wpcs`: WordPress coding standards (dev)
|
||||
|
||||
## Development
|
||||
|
||||
### Running Tests
|
||||
|
||||
```bash
|
||||
composer test
|
||||
```
|
||||
|
||||
### Code Quality
|
||||
|
||||
```bash
|
||||
composer lint
|
||||
composer lint:fix
|
||||
```
|
||||
|
||||
### Coverage
|
||||
|
||||
```bash
|
||||
composer coverage
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Add tests for new functionality
|
||||
5. Ensure all tests pass
|
||||
6. Submit a pull request
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the GPL-3.0-or-later License - see the [LICENSE.md](LICENSE.md) file for details.
|
||||
|
||||
## Credits
|
||||
|
||||
- **Author**: Henrik Liebel (Webshore)
|
||||
- **Inspired by**: Laravel Framework, Roots Acorn
|
||||
- **Website**: [webshore.eu](https://webshore.eu/)
|
||||
|
||||
## Support
|
||||
|
||||
For support and questions, please visit the [project repository](https://git.webshore.io/webshr/core) or contact [mail@henrikliebel.com](mailto:mail@henrikliebel.com).
|
||||
Reference in New Issue
Block a user