From 87c0c7d40041117f59025e1866bf20052561d6e8 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Mon, 7 Sep 2015 20:46:33 +0200 Subject: [PATCH] Deprecate ResourceInterface::getResource() The return value of this method does not make sense if you do not exactly know about the type of resource at hand. For example, it may be [an array](https://github.com/symfony/symfony/blob/b49fa129bdb3c0aa970a006b16dd1ca63a9d7ebd/src/Symfony/Component/HttpKernel/Config/EnvParametersResource.php#L57) or a [file path](https://github.com/symfony/symfony/blob/87800ae47e64429f2544b798575d1cc1d4e5464a/src/Symfony/Component/Config/Resource/FileResource.php#L51). As all usages of getResource() within Symfony are in tests of particular Resource implementations anyway, deprecating and later removing this interface helps us with simplifying the ResourceInterface (https://github.com/symfony/symfony/issues/7176). --- src/Symfony/Component/Config/CHANGELOG.md | 4 ++++ src/Symfony/Component/Config/Resource/ResourceInterface.php | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/src/Symfony/Component/Config/CHANGELOG.md b/src/Symfony/Component/Config/CHANGELOG.md index 3bc22a57bd..8e8e833553 100644 --- a/src/Symfony/Component/Config/CHANGELOG.md +++ b/src/Symfony/Component/Config/CHANGELOG.md @@ -23,6 +23,10 @@ After: the code will work as expected and it will restrict the values of the * deprecated the `ResourceInterface::isFresh()` method. If you implement custom resource types and they can be validated that way, make them implement the new `SelfCheckingResourceInterface`. + * deprecated the getResource() method in ResourceInterface. You can still call this method + on concrete classes implementing the interface, but it does not make sense at the interface + level as you need to know about the particular type of resource at hand to understand the + semantics of the returned value. 2.7.0 ----- diff --git a/src/Symfony/Component/Config/Resource/ResourceInterface.php b/src/Symfony/Component/Config/Resource/ResourceInterface.php index c0f0e50e06..55b3e09648 100644 --- a/src/Symfony/Component/Config/Resource/ResourceInterface.php +++ b/src/Symfony/Component/Config/Resource/ResourceInterface.php @@ -47,6 +47,12 @@ interface ResourceInterface * Returns the tied resource. * * @return mixed The resource + * + * @deprecated since 2.8, to be removed in 3.0. As there are many different kinds of resource, + * a single getResource() method does not make sense at the interface level. You + * can still call getResource() on implementing classes, probably after performing + * a type check. If you know the concrete type of Resource at hand, the return value + * of this method may make sense to you. */ public function getResource(); }