3.6 KiB
Executable File
3.6 KiB
Executable File
url.class.php
A PHP URL routing and handling class for web applications with support for pretty URLs and request parsing.
Static Properties
URL::$locator // Current URL path
URL::$route // Parsed route information
URL::$error // Error message for 404s
URL::$title // Page title
URL::$page_type // Response type (default: 'html')
URL::$fragments // URL fragments array
URL::$tried // Attempted routes (debugging)
Request Parsing
URL::ParseRequestURI() // Extract locator from REQUEST_URI
Parses URLs and populates $_REQUEST with query parameters. Handles both pretty URLs and query string format.
Route Generation
URL::MakeRoute($locator) // Generate route from URL path
Creates route array with:
l-path- Clean URL path segmentspage- Target page/view (defaults to 'index')- URL config values
Special Route Handling
- Paths starting with
:use the entire path as page name - Strips dots and empty segments for security
- Removes root path prefix
URL Generation
URL::Link($path, $params) // Generate application URL
Creates URLs based on cfg('url/pretty') setting:
- Pretty URLs:
/path?param=value - Query URLs:
/?path¶m=value
Navigation
URL::Redirect($url, $params) // Redirect and exit
URL::NotFound($message) // Send 404 response
Examples
Basic Routing
// Parse current request
$locator = URL::ParseRequestURI(); // Returns 'users/profile'
$route = URL::MakeRoute(); // Creates route array
// Access route data
echo URL::$route['l-path']; // 'users/profile'
echo URL::$route['page']; // 'index' (default)
URL Generation
// Generate links
$userLink = URL::Link('users/123'); // '/users/123'
$searchLink = URL::Link('search', ['q' => 'term']); // '/search?q=term'
// Redirect examples
URL::Redirect('login'); // Redirect to login
URL::Redirect('dashboard', ['tab' => 'settings']); // With parameters
Special Page Routes
// URL: /special/admin/users
// If URL starts with ':special', entire path becomes page name
URL::MakeRoute(':special/admin/users');
// Results in: page = 'special/admin/users'
Error Handling
// Set 404 status
URL::NotFound('Page not found');
echo URL::$error; // 'Page not found'
// Check attempted routes
var_dump(URL::$tried); // Array of attempted route resolutions
Configuration Integration
Uses configuration values:
cfg('url/root')- Application root pathcfg('url/pretty')- Enable/disable pretty URLs$GLOBALS['config']['url']- URL configuration array
URL Parsing Logic
- Extract Path: Removes query string from REQUEST_URI
- Parse Parameters: Converts query string to $_REQUEST entries
- Clean Segments: Removes dots, empty segments, security prefixes
- Route Resolution: Determines target page and path
- Special Handling: Processes colon-prefixed paths
Security Features
- Dot Prevention: Strips segments starting with '.'
- Path Sanitization: Removes empty and problematic segments
- Root Stripping: Removes application root from paths
Pretty URL Support
Supports both URL formats:
// Pretty URLs (url/pretty = true)
/users/profile/edit
/search?q=term
// Query URLs (url/pretty = false)
/?users/profile/edit
/?search&q=term