summaryrefslogtreecommitdiff
path: root/zend/eval.cpp
diff options
context:
space:
mode:
authorEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2015-01-11 13:49:15 +0100
committerEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2015-01-11 13:49:15 +0100
commitae9d580fe7a79052d614b7d48d8feb54836fe334 (patch)
tree874ed8c758b51a8c6f1b280620d70725f5936ac1 /zend/eval.cpp
parent1c663ea116121469e37ad2cb9480387c16c0236b (diff)
added include(), require(), include_once() and require_once() methods, based on the Php::File class (feature built based on inspiration from pull request #147);
Diffstat (limited to 'zend/eval.cpp')
-rw-r--r--zend/eval.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/zend/eval.cpp b/zend/eval.cpp
index 32d807a..4c4bffc 100644
--- a/zend/eval.cpp
+++ b/zend/eval.cpp
@@ -63,6 +63,71 @@ Value eval(const std::string &phpCode)
}
/**
+ * Include a file
+ * @param filename
+ * @return Value
+ */
+Value include(const std::string &filename)
+{
+ // we can simply execute a file
+ return File(filename).execute();
+}
+
+/**
+ * Include a file only once
+ * @param filename
+ * @return Value
+ */
+Value include_once(const std::string &filename)
+{
+ // we can simply execute a file
+ return File(filename).execute();
+}
+
+/**
+ * Require a file
+ * This causes a fatal error if the file does not exist
+ * @param filename
+ * @return Value
+ */
+Value require(const std::string &filename)
+{
+ // create the file
+ File file(filename);
+
+ // execute if it exists
+ if (file.exists()) return file.execute();
+
+ // trigger fatal error
+ error << filename << " does not exist" << std::flush;
+
+ // unreachable
+ return nullptr;
+}
+
+/**
+ * Require a file only once
+ * This causes a fatal error if the file does not exist
+ * @param filename
+ * @return Value
+ */
+Value require_once(const std::string &filename)
+{
+ // create the file
+ File file(filename);
+
+ // execute if it exists
+ if (file.exists()) return file.once();
+
+ // trigger fatal error
+ error << filename << " does not exist" << std::flush;
+
+ // unreachable
+ return nullptr;
+}
+
+
+/**
* End of namespace
*/
}