Annotation of embedaddon/php/Zend/tests/zend2.php.txt, revision 1.1.1.1
1.1 misho 1: Example 1: A singleton (static members)
2: =======================================
3:
4: <?php
5:
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:
33: ?>
34:
35: Example 2: Factory method (derefencing objects returned from functions)
36: =======================================================================
37:
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:
68: ?>
69:
70: Example 3: Class constants and class scope
71: ==========================================
72:
73: <?php
74:
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();
89:
90: ?>
91:
92: Example 4: Regular object method using both local and global functions
93: ======================================================================
94:
95: <?php
96:
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";
115: ?>
116:
117: Example 5: Multiple derefencing of objects returned from methods
118: ================================================================
119:
120: <?php
121:
122:
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: }
147:
148: $person = new Person("John", "New York");
149: $person->getName()->display();
150:
151: ?>
152:
153: Example 6: Exception handling
154: =============================
155:
156: <?
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:
187: ?>
188:
189: Example 7: __clone()
190: ===================
191:
192: <?
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:
209:
210:
211: $obj = new MyCloneable();
212:
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";
227: ?>
228:
229: Example 8: Unified constructors
230: ===============================
231:
232: <?
233:
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:
253: ?>
254:
255: Example 9: Destructors
256: =======================
257:
258: <?php
259:
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: }
271: }
272:
273: $obj = new MyDestructableClass();
274:
275: ?>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>