aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/command
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-21 18:49:24 +0900
committernsfisis <nsfisis@gmail.com>2026-06-21 18:52:05 +0900
commita3171eefd8f8e520329bdd8f613e83ba6f0a7c13 (patch)
tree195599a0c46b97349f017b97e965e4b4c1794f36 /crates/shirabe/src/command
parente24bf7e3b6b16a77c2eaeae9ba7b453f5138ff25 (diff)
downloadphp-shirabe-a3171eefd8f8e520329bdd8f613e83ba6f0a7c13.tar.gz
php-shirabe-a3171eefd8f8e520329bdd8f613e83ba6f0a7c13.tar.zst
php-shirabe-a3171eefd8f8e520329bdd8f613e83ba6f0a7c13.zip
refactor(php-shim): remove ArrayObject, inline IndexMap into PhpMixed::Object
ArrayObject was only a thin wrapper around IndexMap<String, PhpMixed> 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::<StdClass>()/is::<ArrayObject>() instanceof checks in JsonManipulator are replaced with the faithful as_object() mapping. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/command')
-rw-r--r--crates/shirabe/src/command/base_config_command.rs2
-rw-r--r--crates/shirabe/src/command/config_command.rs6
2 files changed, 4 insertions, 4 deletions
diff --git a/crates/shirabe/src/command/base_config_command.rs b/crates/shirabe/src/command/base_config_command.rs
index 01952f6..4099ea5 100644
--- a/crates/shirabe/src/command/base_config_command.rs
+++ b/crates/shirabe/src/command/base_config_command.rs
@@ -89,7 +89,7 @@ pub trait BaseConfigCommand: BaseCommand {
.borrow()
.write(PhpMixed::Array({
let mut m = IndexMap::new();
- m.insert("config".to_string(), PhpMixed::Array(IndexMap::new()));
+ m.insert("config".to_string(), PhpMixed::Object(IndexMap::new()));
m
}))?;
let _ = Silencer::call(|| {
diff --git a/crates/shirabe/src/command/config_command.rs b/crates/shirabe/src/command/config_command.rs
index 1517e57..2ee6fd2 100644
--- a/crates/shirabe/src/command/config_command.rs
+++ b/crates/shirabe/src/command/config_command.rs
@@ -10,7 +10,7 @@ use shirabe_external_packages::symfony::console::command::command::Command;
use shirabe_external_packages::symfony::console::input::InputInterface;
use shirabe_external_packages::symfony::console::output::OutputInterface;
use shirabe_php_shim::{
- ArrayObject, InvalidArgumentException, JsonObject, PhpMixed, RuntimeException, array_filter,
+ InvalidArgumentException, JsonObject, PhpMixed, RuntimeException, array_filter,
array_filter_use_key, array_is_list, array_map, array_merge, array_unique, count,
escapeshellcmd, exec, explode, file_exists, file_get_contents, implode, in_array, is_array,
is_bool, is_dir, is_numeric, is_object, is_string, json_encode, key, sort, sprintf,
@@ -188,7 +188,7 @@ impl Command for ConfigCommand {
"bearer",
"forgejo-token",
] {
- empty_objs.insert(k.to_string(), PhpMixed::Object(ArrayObject::new(None)));
+ empty_objs.insert(k.to_string(), PhpMixed::Object(IndexMap::new()));
}
self.auth_config_file
.as_ref()
@@ -487,7 +487,7 @@ impl Command for ConfigCommand {
})
.unwrap_or_default();
if type_strings.iter().any(|s| s == "object") {
- value = PhpMixed::Object(ArrayObject::new(None));
+ value = PhpMixed::Object(IndexMap::new());
}
}
}