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 segments
  • page - 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&param=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 path
  • cfg('url/pretty') - Enable/disable pretty URLs
  • $GLOBALS['config']['url'] - URL configuration array

URL Parsing Logic

  1. Extract Path: Removes query string from REQUEST_URI
  2. Parse Parameters: Converts query string to $_REQUEST entries
  3. Clean Segments: Removes dots, empty segments, security prefixes
  4. Route Resolution: Determines target page and path
  5. 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