Description
For Issue #341, I looked into what is needed to put sfDoctrinePlugin
in a separate package and not have it shipped with the base framework (e.g. propel orm doesn't need this plugin). I don't really like the solution of the other fos1 plugin packages. What happens there is that composer-installer
1.0 knows about symfony1-plugin
and copies the installed package into the appropriate plugins directory. This is not very practical to do in the composer era. Let's take a look at what to do:
- the
sfProjectConfiguration::getAllPluginPaths
method should return all packages that are of typesymfony1-plugin
:if (class_exists(Composer\InstalledVersions::class)) { $sf1PluginPackageNames = Composer\InstalledVersions::getInstalledPackagesByType('symfony1-plugin'); foreach ($sf1PluginPackageNames as $sf1PluginPackageName) { $path = Composer\InstalledVersions::getInstallPath($sf1PluginPackageName); if ($path !== null) { $pluginPaths[basename($path)] = $path; } } }
- we should not allow
composer/installers
1.0 to be in the dependencies, because this will duplicate the plugins
This change would get rid of package codes (which don't work anyway: https://github.com/orgs/FriendsOfSymfony1/discussions/333#discussion-6326793 ), pear codes, and should be default the composer installation way of the framework and the plugins.
What other improvements could be considered?
- support psr-4 plugins?
- composer plugin to enable plugins (same as
bundle.php
).
Files to remove
- ./package.xml.tmpl
- ./lib/plugin/*
- ./test/unit/plugin/*
Deprecated commands/tasks
- plugin:add-channel
- plugin:install
- plugin:uninstall
- plugin:upgrade
Deprecated methods
- sfBaseTask::getPluginManager