function PublicStream::basePath

Same name in other branches
  1. 9 core/lib/Drupal/Core/StreamWrapper/PublicStream.php \Drupal\Core\StreamWrapper\PublicStream::basePath()
  2. 8.9.x core/lib/Drupal/Core/StreamWrapper/PublicStream.php \Drupal\Core\StreamWrapper\PublicStream::basePath()
  3. 11.x core/lib/Drupal/Core/StreamWrapper/PublicStream.php \Drupal\Core\StreamWrapper\PublicStream::basePath()

Returns the base path for public://.

If we have a setting for the public:// scheme's path, we use that. Otherwise we build a reasonable default based on the site.path service if it's available, or a default behavior based on the request.

Note that this static method is used by \Drupal\system\Form\FileSystemForm so you should alter that form or substitute a different form if you change the class providing the stream_wrapper.public service.

The site path is injectable from the site.path service:

$base_path = PublicStream::basePath(\Drupal::getContainer()->getParameter('site.path'));

Parameters

string $site_path: (optional) The site.path service parameter, which is typically the path to sites/ in a Drupal installation. This allows you to inject the site path using services from the caller. If omitted, this method will use the global service container or the kernel's default behavior to determine the site path.

Return value

string The base path for public:// typically sites/default/files.

21 calls to PublicStream::basePath()
AssetsStream::basePath in core/lib/Drupal/Core/StreamWrapper/AssetsStream.php
Returns the base path for public://.
CachedStorageTest::setUp in core/tests/Drupal/KernelTests/Core/Config/Storage/CachedStorageTest.php
FileStorageTest::setUp in core/tests/Drupal/KernelTests/Core/Config/Storage/FileStorageTest.php
FileSystem::getTempDirectory in core/lib/Drupal/Core/File/FileSystem.php
FileSystemForm::buildForm in core/modules/system/src/Form/FileSystemForm.php
Form constructor.

... See full list

1 method overrides PublicStream::basePath()
AssetsStream::basePath in core/lib/Drupal/Core/StreamWrapper/AssetsStream.php
Returns the base path for public://.

File

core/lib/Drupal/Core/StreamWrapper/PublicStream.php, line 102

Class

PublicStream
Defines a Drupal public (public://) stream wrapper class.

Namespace

Drupal\Core\StreamWrapper

Code

public static function basePath($site_path = NULL) {
    if ($site_path === NULL) {
        // Find the site path. Kernel service is not always available at this
        // point, but is preferred, when available.
        if (\Drupal::hasService('kernel')) {
            $site_path = \Drupal::getContainer()->getParameter('site.path');
        }
        else {
            // If there is no kernel available yet, we call the static
            // findSitePath().
            $site_path = DrupalKernel::findSitePath(Request::createFromGlobals());
        }
    }
    return Settings::get('file_public_path', $site_path . '/files');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.