diff options
Diffstat (limited to 'lib/public/AppFramework/Utility')
-rw-r--r-- | lib/public/AppFramework/Utility/IControllerMethodReflector.php | 59 | ||||
-rw-r--r-- | lib/public/AppFramework/Utility/ITimeFactory.php | 51 |
2 files changed, 110 insertions, 0 deletions
diff --git a/lib/public/AppFramework/Utility/IControllerMethodReflector.php b/lib/public/AppFramework/Utility/IControllerMethodReflector.php new file mode 100644 index 00000000000..95d7fbebb56 --- /dev/null +++ b/lib/public/AppFramework/Utility/IControllerMethodReflector.php @@ -0,0 +1,59 @@ +<?php + +declare(strict_types=1); +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ +namespace OCP\AppFramework\Utility; + +/** + * Interface ControllerMethodReflector + * + * Reads and parses annotations from doc comments + * + * @since 8.0.0 + * @deprecated 22.0.0 will be obsolete with native attributes in PHP8 + * @see https://help.nextcloud.com/t/how-should-we-use-php8-attributes/104278 + */ +interface IControllerMethodReflector { + /** + * @param object $object an object or classname + * @param string $method the method which we want to inspect + * @return void + * @since 8.0.0 + * @deprecated 17.0.0 Reflect should not be called multiple times and only be used internally. This will be removed in Nextcloud 18 + */ + public function reflect($object, string $method); + + /** + * Inspects the PHPDoc parameters for types + * + * @param string $parameter the parameter whose type comments should be + * parsed + * @return string|null type in the type parameters (@param int $something) + * would return int or null if not existing + * @since 8.0.0 + * @deprecated 22.0.0 this method is only used internally + */ + public function getType(string $parameter); + + /** + * @return array the arguments of the method with key => default value + * @since 8.0.0 + * @deprecated 22.0.0 this method is only used internally + */ + public function getParameters(): array; + + /** + * Check if a method contains an annotation + * + * @param string $name the name of the annotation + * @return bool true if the annotation is found + * @since 8.0.0 + * @deprecated 22.0.0 will be obsolete with native attributes in PHP8 + * @see https://help.nextcloud.com/t/how-should-we-use-php8-attributes/104278 + */ + public function hasAnnotation(string $name): bool; +} diff --git a/lib/public/AppFramework/Utility/ITimeFactory.php b/lib/public/AppFramework/Utility/ITimeFactory.php new file mode 100644 index 00000000000..cd63b94dee3 --- /dev/null +++ b/lib/public/AppFramework/Utility/ITimeFactory.php @@ -0,0 +1,51 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ +namespace OCP\AppFramework\Utility; + +use Psr\Clock\ClockInterface; + +/** + * Use this to get a timestamp or DateTime object in code to remain testable + * + * @since 8.0.0 + * @since 27.0.0 Extends the \Psr\Clock\ClockInterface interface + * @ref https://www.php-fig.org/psr/psr-20/#21-clockinterface + */ + +interface ITimeFactory extends ClockInterface { + /** + * @return int the result of a call to time() + * @since 8.0.0 + */ + public function getTime(): int; + + /** + * @param string $time + * @param \DateTimeZone|null $timezone + * @return \DateTime + * @since 15.0.0 + */ + public function getDateTime(string $time = 'now', ?\DateTimeZone $timezone = null): \DateTime; + + /** + * @param \DateTimeZone $timezone + * @return static + * @since 26.0.0 + */ + public function withTimeZone(\DateTimeZone $timezone): static; + + /** + * @param string|null $timezone + * @return \DateTimeZone Requested timezone if provided, UTC otherwise + * @throws \Exception + * @since 29.0.0 + */ + public function getTimeZone(?string $timezone = null): \DateTimeZone; +} |