services.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. /**
  3. * Yoast SEO Plugin File.
  4. *
  5. * @package Yoast\YoastSEO\Dependency_Injection
  6. */
  7. namespace Yoast\WP\Free\Dependency_Injection;
  8. use Symfony\Component\DependencyInjection\Definition;
  9. use Yoast\WP\Free\Repositories\Indexable_Repository;
  10. use Yoast\WP\Free\Repositories\Primary_Term_Repository;
  11. use Yoast\WP\Free\Repositories\SEO_Links_Repository;
  12. use Yoast\WP\Free\Repositories\SEO_Meta_Repository;
  13. use Yoast\WP\Free\WordPress\Wrapper;
  14. /* @var $container \Symfony\Component\DependencyInjection\ContainerBuilder */
  15. // WordPress factory functions.
  16. $container->register( 'wpdb', 'wpdb' )->setFactory( [ Wrapper::class, 'get_wpdb' ] );
  17. $container->register( 'wp_query', 'WP_Query' )->setFactory( [ Wrapper::class, 'get_wp_query' ] );
  18. // Model repository factory functions.
  19. $container->register( Indexable_Repository::class, Indexable_Repository::class )->setFactory( [ Indexable_Repository::class, 'get_instance' ] )->setAutowired( true );
  20. $container->register( Primary_Term_Repository::class, Primary_Term_Repository::class )->setFactory( [ Primary_Term_Repository::class, 'get_instance' ] )->setAutowired( true );
  21. $container->register( SEO_Meta_Repository::class, SEO_Meta_Repository::class )->setFactory( [ SEO_Meta_Repository::class, 'get_instance' ] )->setAutowired( true );
  22. $container->register( SEO_Links_Repository::class, SEO_Links_Repository::class )->setFactory( [ SEO_Links_Repository::class, 'get_instance' ] )->setAutowired( true );
  23. $excluded_files = [
  24. 'main.php',
  25. ];
  26. $excluded_directories = [
  27. 'models',
  28. 'loaders',
  29. 'wordpress',
  30. 'generated',
  31. 'orm',
  32. ];
  33. $excluded = \implode( ',', \array_merge( $excluded_directories, $excluded_files ) );
  34. $base_definition = new Definition();
  35. $base_definition
  36. ->setAutowired( true )
  37. ->setAutoconfigured( true )
  38. ->setPublic( false );
  39. /* @var $loader \Yoast\WP\Free\Dependency_Injection\Custom_Loader */
  40. $loader->registerClasses( $base_definition, 'Yoast\\WP\\Free\\', 'src/*', 'src/{' . $excluded . '}' );
  41. if ( \file_exists( __DIR__ . '/../../premium/config/dependency-injection/services.php' ) ) {
  42. include __DIR__ . '/../../premium/config/dependency-injection/services.php';
  43. }