diff --git a/documentation/exceptions.html b/documentation/exceptions.html index c4f0e5c6..f3938ae7 100644 --- a/documentation/exceptions.html +++ b/documentation/exceptions.html @@ -17,7 +17,7 @@

Exceptions

* and that divides them. Division by zero is of course * not permitted - it will throw an exception then */ -Php::Value myDiv(Php::Parameters ¶ms) +Php::Value myDiv(Php::Parameters &params) { // division by zero is not permitted, throw an exception when this happens if (params[1] == 0) throw Php::Exception("Division by zero"); diff --git a/documentation/ini.html b/documentation/ini.html new file mode 100644 index 00000000..3d40d390 --- /dev/null +++ b/documentation/ini.html @@ -0,0 +1,99 @@ +

Reading php.ini variables

+

+ Reading settings from the php.ini file(s) is just as simple as it + is to obtain these settings from a regular PHP script. Inside a PHP script + you can use the built-in ini_get() function to read settings from the php.ini + file, and in your C++ extension you use the Php::ini_get() function. +

+

+

#include <phpcpp.h>
+
+/**
+ *  Simple function that is used to demonstrate how settings from the
+ *  php.ini file can be read
+ */
+void myFunction()
+{
+    // read in the "output_buffering" variable from the php.ini file
+    int output_buffering = Php::ini_get("output_buffering");
+    
+    // read in the "variables_order" variable
+    std::string variables_order = Php::ini_get("variables_order");
+}
+
+/**
+ *  Switch to C contect so that the get_module() function can be
+ *  called by the Zend engine
+ */
+extern "C" {
+    /**
+     *  The get_module() startup function
+     *  @return void*
+     */
+    PHPCPP_EXPORT void *get_module() {
+        
+        // create extension object
+        static Php::Extension extension("my_extension", "1.0");
+        
+        // export one function
+        extension.add("myFunction", myFunction);
+        
+        // return a pointer to the extension object
+        return extension;
+    }
+}
+

+

+ The Php::ini_get() function returns an object that can be assigned to + strings, integers and floating point numbers. In the above example we have + used this to assign the settings directly to an integer and a std::string. +

+

+ You can only retrieve predefined variables from the php.ini. It is thus not + possible to call Php::ini_get() with random strings. If you want to define + your own variables, you must first register them in the get_module() + function before you can call Php::ini_get() to retrieve the current values. +

+

+

#include <phpcpp.h>
+
+/**
+ *  Simple function that is used to demonstrate how settings from the
+ *  php.ini file can be read
+ */
+void myFunction()
+{
+    // read in a variable defined for this extension
+    int var1 = Php::ini_get("my_extension.var1");
+    
+    // read in a string variable
+    std::string var2 = Php::ini_get("my_extension.var2");
+}
+
+/**
+ *  Switch to C contect so that the get_module() function can be
+ *  called by the Zend engine
+ */
+extern "C" {
+    /**
+     *  The get_module() startup function
+     *  @return void*
+     */
+    PHPCPP_EXPORT void *get_module() {
+        
+        // create extension object
+        static Php::Extension extension("my_extension", "1.0");
+        
+        // export one function
+        extension.add("myFunction", myFunction);
+        
+        // tell the PHP engine that the php.ini variables my_extension.var1
+        // and my_extension.var2 are usable
+        extension.add(Php::Ini("my_extension.var1", "default-value"));
+        extension.add(Php::Ini("my_extension.var2", 12345));
+        
+        // return a pointer to the extension object
+        return extension;
+    }
+}
+