Updates to Tomato RAF including NGINX && PHP
[tomato.git] / release / src / router / php / Zend / tests / zend2.php.txt
blobafe422eaaec8524ec47fee8ae3b47efd819c3ab3
1 Example 1: A singleton (static members)
2 =======================================
4 <?php
6         class Counter {
7                 var $counter = 0;
8                 
9                 function increment_and_print()
10                 {
11                                 print ++$this->counter;
12                                 print "\n";
13                 }       
14         }
15         
16         
17         class SingletonCounter {
18                 static $m_instance = NULL;
19                 
20                 function Instance()
21                 {
22                                 if (self::$m_instance == NULL) {
23                                         self::$m_instance = new Counter();
24                                 }
25                                 return self::$m_instance;
26                 }       
27         }
28         
29         SingletonCounter::Instance()->increment_and_print();
30         SingletonCounter::Instance()->increment_and_print();
31         SingletonCounter::Instance()->increment_and_print();
32         
35 Example 2: Factory method (derefencing objects returned from functions)
36 =======================================================================
38 <?php
39         
40         class Circle {
41                 function draw()
42                 {
43                         print "Circle\n";       
44                 }
45         }
46         
47         class Square {
48                 function draw()
49                 {
50                         print "Square\n";       
51                 }
52         }
53         
54         function ShapeFactoryMethod($shape)
55         {
56                 switch ($shape) {
57                         case "Circle":
58                                 return new Circle();
59                         case "Square":
60                                 return new Square();
61                 }       
62         }
63         
64         ShapeFactoryMethod("Circle")->draw();
65         ShapeFactoryMethod("Square")->draw();
66         
67         
70 Example 3: Class constants and class scope
71 ==========================================
73 <?php
75         class ErrorCodes {
76                 const FATAL = "Fatal error\n";
77                 const WARNING = "Warning\n";
78                 const INFO = "Informational message\n";
79                 
80                 function print_fatal_error_codes()
81                 {
82                         print "FATAL = " . FATAL;
83                         print "self::FATAL = " . self::FATAL;
84                 }
85         }
86         
87         /* Call the static function and move into the ErrorCodes scope */
88         ErrorCodes::print_fatal_error_codes();
92 Example 4: Regular object method using both local and global functions
93 ======================================================================
95 <?php
97         class HelloWorld {
98                 const HELLO_WORLD = "Hello, World!\n";
99                 
100                 function get_hello_world()
101                 {
102                         return HELLO_WORLD;
103                 }
104                 
105                 function length_of_hello_world()
106                 {
107                         $str = $this->get_hello_world();
108                         return strlen($str);
109                 }       
110         }
111         
112         $obj = new HelloWorld();
113         print "length_of_hello_world() = " . $obj->length_of_hello_world();
114         print "\n";
117 Example 5: Multiple derefencing of objects returned from methods
118 ================================================================
120 <?php
123         class Name {
124                 function Name($_name)
125                 {
126                         $this->name = $_name;   
127                 }
128                 
129                 function display()
130                 {
131                         print $this->name;
132                         print "\n";
133                 }
134         }
135         
136         class Person {
137                 function Person($_name, $_address)
138                 {
139                         $this->name = new Name($_name);
140                 }
141                 
142                 function getName()
143                 {
144                         return $this->name;     
145                 }
146         }       
148         $person = new Person("John", "New York");
149         $person->getName()->display();
150         
153 Example 6: Exception handling
154 =============================
157         class MyException {
158                 function MyException($_error) {
159                         $this->error = $_error; 
160                 }
161                 
162                 function getException()
163                 {
164                         return $this->error;    
165                 }
166         }
167         
168         function ThrowException()
169         {
170                 throw new MyException("'This is an exception!'");       
171         }
172         
173         
174         try {
175         } catch (MyException $exception) {
176                 print "There was an exception: " . $exception->getException();
177                 print "\n";
178         }
179         
180         try {
181                 ThrowException();       
182         } catch (MyException $exception) {
183                 print "There was an exception: " . $exception->getException();
184                 print "\n";
185         }
186         
189 Example 7: __clone()
190 ===================
193         class MyCloneable {
194                 static $id = 0;
195                 
196                 function MyCloneable()
197                 {
198                         $this->id = self::$id++;
199                 }
200                 
201                 function __clone()
202                 {
203                         $this->name = $that->name;
204                         $this->address = "New York";
205                         $this->id = self::$id++;
206                 }
207         }
208         
210         
211         $obj = new MyCloneable();
213         $obj->name = "Hello";
214         $obj->address = "Tel-Aviv";
215         
216         print $obj->id;
217         print "\n";
218         
219         $obj = $obj->__clone();
220         
221         print $obj->id;
222         print "\n";
223         print $obj->name;
224         print "\n";
225         print $obj->address;
226         print "\n";
229 Example 8: Unified constructors
230 ===============================
234         class BaseClass {
235                 function __construct()
236                 {
237                         print "In BaseClass constructor\n";     
238                 }
239         }
240         
241         class SubClass extends BaseClass {
242                 function __construct()
243                 {
244                                 parent::__construct();
245                                 print "In SubClass constructor\n";      
246                 }
247         }
248         
249         $obj = new BaseClass();
250         
251         $obj = new SubClass();
252         
255 Example 9: Destructors
256 =======================
258 <?php
260 class MyDestructableClass {
261         function __construct()
262         {
263                 print "In constructor\n";
264                 $this->name = "MyDestructableClass";
265         }       
266         
267         function __destruct()
268         {
269                 print "Destroying " . $this->name . "\n";
270         }       
273 $obj = new MyDestructableClass();