Annotation of embedaddon/php/Zend/tests/zend2.php.txt, revision 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>