\n";
$error_message .= "
\n";
$error_message .= " \n";
$error_message .= "
<%= this.data.title %>
\n";
$error_message .= " \n";
$error_message .= " \n";
$error_message .= "\n\n";
$error_message .= "See /rsx/app/demo/components/Counter_Widget.jqhtml for a complete example.";
throw new YoureDoingItWrongException($error_message);
}
/**
* Jqhtml component with incorrect lifecycle method naming
*/
public static function jqhtml_lifecycle_method(
string $file,
int $line_num,
string $method
): void {
$error_message = "Fatal: Incorrect Component lifecycle method detected.\n\n";
$error_message .= "File: {$file}\n";
$error_message .= "Line {$line_num}: Found '{$method}()' method\n\n";
$error_message .= "PROBLEM: Component lifecycle methods must be prefixed with 'on_'\n\n";
$error_message .= "SOLUTION: Rename the method:\n";
$error_message .= "- '{$method}()' should be 'on_{$method}()'\n\n";
$error_message .= "CORRECT LIFECYCLE METHODS:\n";
$error_message .= "- on_create() - Setup initial state and bind events\n";
$error_message .= "- on_load() - Fetch async data (no DOM manipulation)\n";
$error_message .= "- on_ready() - Final setup after component is loaded\n\n";
$error_message .= "All methods should be async if they need to wait for operations.\n\n";
$error_message .= "EXAMPLE (from User_Card.js):\n";
$error_message .= "async on_create() {\n";
$error_message .= " this.editing = false;\n";
$error_message .= "}\n\n";
$error_message .= "async on_load() {\n";
$error_message .= " // Fetch data here\n";
$error_message .= " return new Promise((resolve) => {\n";
$error_message .= " // Load data...\n";
$error_message .= " resolve();\n";
$error_message .= " });\n";
$error_message .= "}\n\n";
$error_message .= "async on_ready() {\n";
$error_message .= " this.\$.addClass('loaded');\n";
$error_message .= "}";
throw new YoureDoingItWrongException($error_message);
}
/**
* PHP file contains multiple class definitions
*/
public static function multiple_classes_in_file(
string $file_path,
array $class_names
): void {
$error_message = "Multiple classes detected in PHP file: {$file_path}\n";
$error_message .= "Classes found: " . implode(', ', $class_names) . "\n";
$error_message .= "PHP files must contain only one class per file.";
throw new YoureDoingItWrongException($error_message);
}
}