114 lines
3.2 KiB
Markdown
Executable File
114 lines
3.2 KiB
Markdown
Executable File
# ulib.php
|
|
|
|
A collection of PHP utility functions for common web development tasks.
|
|
|
|
## Autoloading & Setup
|
|
|
|
The library automatically registers a class autoloader and starts the profiler:
|
|
|
|
```php
|
|
// Auto-loads classes from lib/{classname}.class.php
|
|
require_once 'lib/ulib.php';
|
|
```
|
|
|
|
## Asset Management
|
|
|
|
```php
|
|
include_js('js/script.js') // Outputs <script> tag with cache busting
|
|
include_css('css/style.css') // Outputs <link> tag with cache busting
|
|
get_file_location($file) // Find file in include paths
|
|
```
|
|
|
|
Assets are automatically versioned with `filemtime()` for cache busting.
|
|
|
|
## HTML/Security Functions
|
|
|
|
```php
|
|
safe($text) // HTML escape for content
|
|
asafe($text) // HTML escape for attributes (strips newlines)
|
|
jsafe($data) // JSON encode (alias for json_encode)
|
|
```
|
|
|
|
## Configuration
|
|
|
|
```php
|
|
cfg('database/host') // Get config value with slash notation
|
|
cfg('url/root') // Access nested config arrays
|
|
```
|
|
|
|
Reads from `$GLOBALS['config']` with support for nested keys using `/` separator.
|
|
|
|
## Utility Functions
|
|
|
|
```php
|
|
first($a, $b, $c) // Return first non-empty value
|
|
alnum($text, '_', true) // Keep only alphanumeric + spaces
|
|
write_to_file($file, $content) // Append content to file
|
|
```
|
|
|
|
### first() Examples
|
|
```php
|
|
$name = first($user_input, $default_name, 'Anonymous');
|
|
$config = first($_GET['theme'], $_COOKIE['theme'], 'default');
|
|
```
|
|
|
|
## String Processing
|
|
|
|
### String Parsing
|
|
```php
|
|
nibble(':', $path, $found) // Extract substring before delimiter
|
|
// Example: nibble(':', 'user:pass', $found) → 'user', $path becomes 'pass'
|
|
```
|
|
|
|
### Date/Time
|
|
```php
|
|
age_to_string($timestamp) // Human-friendly time differences
|
|
// Examples: "just now", "5 min ago", "2 h ago", "Mon 14:30"
|
|
```
|
|
|
|
### Hash Generation
|
|
```php
|
|
make_hash() // Generate random hash (10 chars)
|
|
make_hash($input, 20) // Hash specific input (20 chars)
|
|
```
|
|
|
|
### Base Conversion
|
|
```php
|
|
base_convert_any($num, $from, $to) // Convert between any number bases
|
|
// Example: base_convert_any('FF', '0123456789ABCDEF', '0123456789') → '255'
|
|
```
|
|
|
|
## Advanced Features
|
|
|
|
- **Include Path Resolution**: Searches multiple paths for files
|
|
- **Automatic Permissions**: Sets 0777 on written files
|
|
- **Cache Busting**: Automatic versioning for JS/CSS
|
|
- **Reference Parameters**: Functions like `nibble()` modify input variables
|
|
- **Flexible Base Conversion**: Support for custom character sets
|
|
|
|
## Common Usage Patterns
|
|
|
|
```php
|
|
// Configuration-driven asset loading
|
|
include_css(cfg('theme/css_file'));
|
|
|
|
// Safe template output
|
|
echo '<div title="' . asafe($user_input) . '">' . safe($content) . '</div>';
|
|
|
|
// Fallback values
|
|
$title = first($_POST['title'], $default_title, 'Untitled');
|
|
|
|
// URL parsing
|
|
$protocol = nibble('://', $url); // Extract 'http' from 'http://example.com'
|
|
|
|
// Time display
|
|
echo 'Posted ' . age_to_string($post_timestamp);
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
Functions include built-in error handling:
|
|
- `get_file_location()` dies with error message if file not found
|
|
- `write_to_file()` uses error suppression for chmod
|
|
- Most functions return safe defaults for invalid input
|