Skip to content

Commit 316ae9e

Browse files
committed
feat(plugin): add lifecycle hooks and command/event support
- Introduce PluginLifecycleInterface for plugin lifecycle management - Add support for commands, events, listeners, enums and concerns in plugin structure - Implement lifecycle hook calls during plugin registration and boot - Rename registerPluginCommands to getRegisteredCommands for clarity - Remove test files as they will be reimplemented with new features
1 parent c5d7a07 commit 316ae9e

File tree

7 files changed

+351
-150
lines changed

7 files changed

+351
-150
lines changed

.phpunit.cache/test-results

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"version":2,"defects":{"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_handles_plugin_controllers_registration":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\MakePluginCommandTest::test_creates_plugin_with_volt_view_type":7,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_controller_binding_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_multiple_plugins_coexistence":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_service_dependency_injection_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_with_volt_views_complete_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_with_custom_namespace_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_disabled_plugin_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_complete_plugin_creation_and_registration_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_view_namespace_registration_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_with_blade_views_complete_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_route_prefixing_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_configuration_customization_lifecycle":8},"times":{"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_services_binds_services_as_singletons":0.034,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_constructor_sets_plugins_path_from_config":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_boot_calls_views_routes_and_controllers_registration":0.004,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_views_adds_view_locations_and_namespaces":0.005,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_configs_loads_plugin_configurations":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_get_plugin_namespace_returns_correct_namespace":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_calls_config_and_services_registration":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_routes_with_plugins_prefix":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_services_binds_interface_to_implementation":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_commands_returns_make_plugin_command":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_controllers_binds_controllers_to_container":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_routes_with_default_prefix":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_configs_handles_missing_plugins_directory":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_get_plugin_namespace_uses_custom_config":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_handles_non_php_files_in_controllers_directory":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_handles_non_php_files_in_services_directory":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_handles_plugin_controllers_registration":0.039,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_works_with_empty_plugins_directory":0.004,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_works_with_non_existent_plugins_directory":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_publishes_config_file":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_registers_plugin_manager_as_singleton":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_handles_plugin_services_registration":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_configuration_can_be_overridden":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_plugin_manager_register_is_called_during_service_registration":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_plugin_manager_boot_is_called_during_service_boot":0.005,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_registers_make_plugin_command":0.042,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_merges_configuration":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_handles_multiple_plugins":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_handles_plugin_views_registration":0.005,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_registers_and_boots_in_correct_order":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\MakePluginCommandTest::test_creates_plugin_with_default_settings":0.006,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\MakePluginCommandTest::test_creates_plugin_with_volt_view_type":0.091,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\MakePluginCommandTest::test_creates_all_required_files":0.082}}
1+
{"version":2,"defects":{"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_handles_plugin_controllers_registration":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\MakePluginCommandTest::test_creates_plugin_with_volt_view_type":7,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_controller_binding_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_multiple_plugins_coexistence":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_service_dependency_injection_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_with_volt_views_complete_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_with_custom_namespace_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_disabled_plugin_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_complete_plugin_creation_and_registration_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_view_namespace_registration_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_with_blade_views_complete_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_route_prefixing_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Feature\\PluginLifecycleTest::test_plugin_configuration_customization_lifecycle":8,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_install_plugin_calls_on_install_hook":7,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_deactivate_plugin_calls_on_deactivate_hook":7,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_uninstall_plugin_calls_on_uninstall_hook":7,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_activate_plugin_calls_on_activate_hook":7,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_lifecycle_hooks_are_called_during_boot":7,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_lifecycle_hooks_are_called_during_register":7},"times":{"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_services_binds_services_as_singletons":0.034,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_constructor_sets_plugins_path_from_config":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_boot_calls_views_routes_and_controllers_registration":0.004,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_views_adds_view_locations_and_namespaces":0.005,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_configs_loads_plugin_configurations":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_get_plugin_namespace_returns_correct_namespace":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_calls_config_and_services_registration":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_routes_with_plugins_prefix":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_services_binds_interface_to_implementation":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_commands_returns_make_plugin_command":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_controllers_binds_controllers_to_container":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_routes_with_default_prefix":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_register_plugin_configs_handles_missing_plugins_directory":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_get_plugin_namespace_uses_custom_config":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_handles_non_php_files_in_controllers_directory":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginManagerTest::test_handles_non_php_files_in_services_directory":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_handles_plugin_controllers_registration":0.039,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_works_with_empty_plugins_directory":0.004,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_works_with_non_existent_plugins_directory":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_publishes_config_file":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_registers_plugin_manager_as_singleton":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_handles_plugin_services_registration":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_configuration_can_be_overridden":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_plugin_manager_register_is_called_during_service_registration":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_plugin_manager_boot_is_called_during_service_boot":0.005,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_registers_make_plugin_command":0.042,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_merges_configuration":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_handles_multiple_plugins":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_handles_plugin_views_registration":0.005,"SoysalTan\\LaravelPluginSystem\\Tests\\Integration\\LaravelPluginSystemServiceProviderTest::test_service_provider_registers_and_boots_in_correct_order":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\MakePluginCommandTest::test_creates_plugin_with_default_settings":0.006,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\MakePluginCommandTest::test_creates_plugin_with_volt_view_type":0.091,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\MakePluginCommandTest::test_creates_all_required_files":0.082,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_install_plugin_calls_on_install_hook":0.048,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_deactivate_plugin_calls_on_deactivate_hook":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_plugin_lifecycle_interface_exists":0.002,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_uninstall_plugin_calls_on_uninstall_hook":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_activate_plugin_calls_on_activate_hook":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_plugin_manager_can_call_lifecycle_hooks":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_base_plugin_service_provider_implements_lifecycle_interface":0.001,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_lifecycle_hooks_are_called_during_boot":0,"SoysalTan\\LaravelPluginSystem\\Tests\\Unit\\PluginLifecycleTest::test_lifecycle_hooks_are_called_during_register":0}}

phpunit.xml

Lines changed: 0 additions & 39 deletions
This file was deleted.

0 commit comments

Comments
 (0)