Skip to content

Commit 97c3ebd

Browse files
committed
Route lexer/parser through optional native classes
Add a small entrypoint in load.php that swaps in WP_MySQL_Native_Lexer / WP_MySQL_Native_Parser when a native extension has pre-declared them, and otherwise falls back to the pure-PHP implementations shipped in this package. The PHP lexer and parser stay where they are with their original class names. No file moves, no polyfill renames. Native extensions plug in by declaring WP_MySQL_Native_* before this file is loaded.
1 parent 2622441 commit 97c3ebd

3 files changed

Lines changed: 24 additions & 2 deletions

File tree

packages/mysql-on-sqlite/src/load.php

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,24 @@
1212
require_once __DIR__ . '/parser/class-wp-parser-node.php';
1313
require_once __DIR__ . '/parser/class-wp-parser-token.php';
1414
require_once __DIR__ . '/mysql/class-wp-mysql-token.php';
15-
require_once __DIR__ . '/mysql/class-wp-mysql-lexer.php';
16-
require_once __DIR__ . '/mysql/class-wp-mysql-parser.php';
15+
16+
/*
17+
* The MySQL lexer and parser have an optional native (e.g. Rust) implementation.
18+
* When the native extension is loaded, it pre-declares WP_MySQL_Native_Lexer /
19+
* WP_MySQL_Native_Parser; otherwise we fall back to the pure-PHP classes shipped
20+
* here. WP_MySQL_Lexer / WP_MySQL_Parser is the public entrypoint either way.
21+
*/
22+
if ( class_exists( 'WP_MySQL_Native_Lexer', false ) ) {
23+
require_once __DIR__ . '/mysql/native/class-wp-mysql-lexer.php';
24+
} else {
25+
require_once __DIR__ . '/mysql/class-wp-mysql-lexer.php';
26+
}
27+
28+
if ( class_exists( 'WP_MySQL_Native_Parser', false ) ) {
29+
require_once __DIR__ . '/mysql/native/class-wp-mysql-parser.php';
30+
} else {
31+
require_once __DIR__ . '/mysql/class-wp-mysql-parser.php';
32+
}
1733
require_once __DIR__ . '/sqlite/class-wp-sqlite-connection.php';
1834
require_once __DIR__ . '/sqlite/class-wp-sqlite-configurator.php';
1935
require_once __DIR__ . '/sqlite/class-wp-sqlite-driver.php';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<?php
2+
3+
class WP_MySQL_Lexer extends WP_MySQL_Native_Lexer {}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<?php
2+
3+
class WP_MySQL_Parser extends WP_MySQL_Native_Parser {}

0 commit comments

Comments
 (0)