summaryrefslogtreecommitdiff
path: root/tests/cpp/include/variables/013-018-calling-php-functions.h
blob: 9a77408a0743f527490aabbdf670f378f65e052d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/**
 *
 *  Test call function
 *	013-calling-php-functions.phpt
 *	...
 *	018-calling-php-functions.phpt
 *
 */


/**
 *  Set up namespace
 */
namespace TestVariables {


	/*
	 * Test call function from user space
	 */
	void fnFromUserSpace(void)
	{


	    Php::out << "fnFromUserSpace" << std::endl;
	    
	    Php::Value param5;
	    param5.set(0, "param5");
	    param5.set(1, 3.14159265359);
	    param5.set(2, 28032014);
	    param5.set("key", "value");

		auto timeZone     = Php::Object("DateTimeZone", "Asia/Yekaterinburg");
		Php::Value param6 = Php::Object("DateTime", "2014-03-28 19:42:15", timeZone);
			    
	    // call a function from user space
	    Php::call("some_function", "param1");
	    Php::call("some_function", "param1", "param2");
	    Php::call("some_function", "param1", "param2", "param3");
	    Php::call("some_function", "param1", "param2", "param3", "param4");
	    Php::call("some_function", "param1", "param2", "param3", "param4", param5);
	    Php::call("some_function", "param1", "param2", "param3", "param4", param5, param6);
	    Php::call("some_function", "param1", "param2", "param3", "param4", "param5", "param6", "param7");
	    Php::call("some_function", "param1", "param2", "param3", "param4", "param5", "param6", "param7", "param8");
	    Php::call("some_function", "param1", "param2", "param3", "param4", "param5", "param6", "param7", "param8", "param9");
	    Php::call("some_function", "param1", "param2", "param3", "param4", "param5", "param6", "param7", "param8", "param9", "param10");

	}

	/*
	 * Test call callback
	 */
	void fnCallback(Php::Parameters &params)
	{
	    Php::out << "call callback" << std::endl;

		Php::Value callback = params[0];

	    
	    Php::Value param5;
	    param5.set(0, "param5");
	    param5.set(1, 3.14159265359);
	    param5.set(2, 28032014);
	    param5.set("key", "value");

		auto timeZone     = Php::Object("DateTimeZone", "Asia/Yekaterinburg");
		Php::Value param6 = Php::Object("DateTime", "2014-03-28 19:42:15", timeZone);
			    
	    // call a function from user space
	    callback("param1");
	    callback("param1", "param2");
	    callback("param1", "param2", "param3");
	    callback("param1", "param2", "param3", "param4");
	    callback("param1", "param2", "param3", "param4", param5);
	    callback("param1", "param2", "param3", "param4", param5, param6);
	    callback("param1", "param2", "param3", "param4", "param5", "param6", "param7");
	    callback("param1", "param2", "param3", "param4", "param5", "param6", "param7", "param8");
	    callback("param1", "param2", "param3", "param4", "param5", "param6", "param7", "param8", "param9");
	    callback("param1", "param2", "param3", "param4", "param5", "param6", "param7", "param8", "param9", "param10");

	}

	/*
	 * Test 
	 */
	void fnFromUserSpace2(void)
	{

	    // create an object (this will also call __construct())
	    Php::Object time("DateTime", "2014-03-28 21:22:15", Php::Object("DateTimeZone", "Asia/Irkutsk"));
	    
	    // call a method on the datetime object
	    Php::out << time.call("format", "Y-m-d H:i:s") << std::endl;
	    
	    // in PHP it is possible to create an array with two parameters, the first
	    // parameter being an object, and the second parameter should be the name
	    // of the method, we can do that in PHP-CPP too
	    Php::Array time_format({time, "format"});
	    
	    // call the method that is stored in the array
	    Php::out << time_format("Y-m-d H:i:s") << std::endl;

	    // call method of class from user space
	    Php::Object usrspcl("usrspClass", "Mount Meru");
	    Php::Array usrspcl_meth({usrspcl, "someMethod"});
	    // call the method that is stored in the array
	    Php::out << usrspcl_meth("is in the Arctics") << std::endl;
	    
	    // call callable object of class from user space
	    Php::Object clbl("CallableClass", "Arctics around mount Meru");
	    Php::out << clbl("is the birthplace of the Hyperboreans") << std::endl;
	}

/**
 *  End of namespace
 */
}