PSR

On this page you find information about the implemented php standards recommendations in Nextcloud.

PSR-0: Autoloading

This standard has been deprecated and will be removed in Nextcloud 27. Please see the :ref:`PSR-4 section<psr4>` instead.

PSR-3: Logger Interface

The dependency injection container can inject an instance of a \Psr\Log\LoggerInterface. The PSR-3 implementation shall easy the integration of 3rd party libraries that require the PSR-3 logger.

PSR-4: Autoloading

The PSR-4 standard describes how class files should be named, so Nextcloud can automatically load them. See the :ref:`classloader docs<appclassloader>` for details.

PSR-11: Container Interface

The dependency injection container follows the PSR-11 container interface, so you may type-hint \Psr\Container\ContainerInterface whenever you want an instance of a container and use has($id) to check for existence and get($id) to retrieve an instance of a service. See the :ref:`dependency injection docs <dependency-injection>` for details.

PSR-20: Clock

The \OCP\AppFramework\Utility\ITimeFactory class follows the PSR-20 clock interface, so you may type-hint \PSR\Clock\ClockInterface and then use the now() method whenever you want to get the current time. You can also change the timezone for the to be returned \DateTimeImmutable instance, by getting a new ITimeFactory from ITimeFactory::withTimeZone().