From 54c02e8110e7611e28cb79bd860b352e8748d666 Mon Sep 17 00:00:00 2001 From: Jarek Tkaczyk Date: Fri, 2 Sep 2016 12:02:13 +0800 Subject: [PATCH] allow passing object instance to class_uses_recursive --- src/Illuminate/Support/helpers.php | 6 +++++- tests/Support/SupportHelpersTest.php | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Support/helpers.php b/src/Illuminate/Support/helpers.php index 99b64f88a63c..e88a0e2540e2 100755 --- a/src/Illuminate/Support/helpers.php +++ b/src/Illuminate/Support/helpers.php @@ -334,11 +334,15 @@ function class_basename($class) /** * Returns all traits used by a class, its subclasses and trait of their traits. * - * @param string $class + * @param object|string $class * @return array */ function class_uses_recursive($class) { + if (is_object($class)) { + $class = get_class($class); + } + $results = []; foreach (array_merge([$class => $class], class_parents($class)) as $class) { diff --git a/tests/Support/SupportHelpersTest.php b/tests/Support/SupportHelpersTest.php index 9f44c37899b5..79f7c4d1653d 100755 --- a/tests/Support/SupportHelpersTest.php +++ b/tests/Support/SupportHelpersTest.php @@ -661,6 +661,15 @@ public function testClassUsesRecursiveShouldReturnTraitsOnParentClasses() class_uses_recursive('SupportTestClassTwo')); } + public function testClassUsesRecursiveAcceptsObject() + { + $this->assertEquals([ + 'SupportTestTraitOne' => 'SupportTestTraitOne', + 'SupportTestTraitTwo' => 'SupportTestTraitTwo', + ], + class_uses_recursive(new SupportTestClassTwo)); + } + public function testArrayAdd() { $this->assertEquals(['surname' => 'Mövsümov'], array_add([], 'surname', 'Mövsümov'));