summaryrefslogtreecommitdiffstats
path: root/utility/methodannotationreader.php
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-04-09 01:44:12 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2014-04-09 22:52:26 +0200
commit21bd539847f33c3889c4f58f14afd672f54a410a (patch)
treed6ff27e38727197b60d1c2c47968b7f64d4f5c2f /utility/methodannotationreader.php
parentfcef0800a24818305e8a52761b05f87e13206689 (diff)
ported to owncloud internal appframework classes, confused with how to start the app and define deps
Diffstat (limited to 'utility/methodannotationreader.php')
-rw-r--r--utility/methodannotationreader.php61
1 files changed, 61 insertions, 0 deletions
diff --git a/utility/methodannotationreader.php b/utility/methodannotationreader.php
new file mode 100644
index 000000000..dc2347b3d
--- /dev/null
+++ b/utility/methodannotationreader.php
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * ownCloud - News
+ *
+ * @author Bernhard Posselt
+ * @copyright 2012 Bernhard Posselt dev@bernhard-posselt.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+namespace OCA\News\Utility;
+
+
+/**
+ * Reads and parses annotations from doc comments
+ */
+class MethodAnnotationReader {
+
+ private $annotations;
+
+ /**
+ * @param object $object an object or classname
+ * @param string $method the method which we want to inspect for annotations
+ */
+ public function __construct($object, $method){
+ $this->annotations = array();
+
+ $reflection = new \ReflectionMethod($object, $method);
+ $docs = $reflection->getDocComment();
+
+ // extract everythin prefixed by @ and first letter uppercase
+ preg_match_all('/@([A-Z]\w+)/', $docs, $matches);
+ $this->annotations = $matches[1];
+ }
+
+
+ /**
+ * Check if a method contains an annotation
+ * @param string $name the name of the annotation
+ * @return bool true if the annotation is found
+ */
+ public function hasAnnotation($name){
+ return in_array($name, $this->annotations);
+ }
+
+
+} \ No newline at end of file