From a3171eefd8f8e520329bdd8f613e83ba6f0a7c13 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 21 Jun 2026 18:49:24 +0900 Subject: refactor(php-shim): remove ArrayObject, inline IndexMap into PhpMixed::Object ArrayObject was only a thin wrapper around IndexMap used as an empty-{} vs empty-[] marker and as the assoc=false JSON object representation; no reference semantics were involved. Inline its payload directly into PhpMixed::Object and drop the type along with the now-dead StdClass. Side effects of the unification: - ArrayObject::new was todo!(); the config --global / object-typed get paths that built PhpMixed::Object(ArrayObject::new(None)) no longer panic. - base_config_command wrote 'config' as PhpMixed::Array(empty), emitting [] instead of {}; now matches PHP's new \ArrayObject ({}). - The dead is::()/is::() instanceof checks in JsonManipulator are replaced with the faithful as_object() mapping. Co-Authored-By: Claude Opus 4.8 (1M context) --- crates/shirabe-php-shim/src/array.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/shirabe-php-shim/src/array.rs') diff --git a/crates/shirabe-php-shim/src/array.rs b/crates/shirabe-php-shim/src/array.rs index 4b3e160..8c1988d 100644 --- a/crates/shirabe-php-shim/src/array.rs +++ b/crates/shirabe-php-shim/src/array.rs @@ -568,7 +568,7 @@ pub fn count(value: &PhpMixed) -> usize { match value { PhpMixed::List(items) => items.len(), PhpMixed::Array(entries) => entries.len(), - PhpMixed::Object(object) => object.count(), + PhpMixed::Object(object) => object.len(), // PHP 8 throws a `TypeError` for non-countable arguments. PhpMixed::Null | PhpMixed::Bool(_) -- cgit v1.3.1