diff options
Diffstat (limited to 'Zend/tests/zend2.php.txt')
-rw-r--r-- | Zend/tests/zend2.php.txt | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/Zend/tests/zend2.php.txt b/Zend/tests/zend2.php.txt new file mode 100644 index 0000000..afe422e --- /dev/null +++ b/Zend/tests/zend2.php.txt @@ -0,0 +1,275 @@ +Example 1: A singleton (static members) +======================================= + +<?php + + class Counter { + var $counter = 0; + + function increment_and_print() + { + print ++$this->counter; + print "\n"; + } + } + + + class SingletonCounter { + static $m_instance = NULL; + + function Instance() + { + if (self::$m_instance == NULL) { + self::$m_instance = new Counter(); + } + return self::$m_instance; + } + } + + SingletonCounter::Instance()->increment_and_print(); + SingletonCounter::Instance()->increment_and_print(); + SingletonCounter::Instance()->increment_and_print(); + +?> + +Example 2: Factory method (derefencing objects returned from functions) +======================================================================= + +<?php + + class Circle { + function draw() + { + print "Circle\n"; + } + } + + class Square { + function draw() + { + print "Square\n"; + } + } + + function ShapeFactoryMethod($shape) + { + switch ($shape) { + case "Circle": + return new Circle(); + case "Square": + return new Square(); + } + } + + ShapeFactoryMethod("Circle")->draw(); + ShapeFactoryMethod("Square")->draw(); + + +?> + +Example 3: Class constants and class scope +========================================== + +<?php + + class ErrorCodes { + const FATAL = "Fatal error\n"; + const WARNING = "Warning\n"; + const INFO = "Informational message\n"; + + function print_fatal_error_codes() + { + print "FATAL = " . FATAL; + print "self::FATAL = " . self::FATAL; + } + } + + /* Call the static function and move into the ErrorCodes scope */ + ErrorCodes::print_fatal_error_codes(); + +?> + +Example 4: Regular object method using both local and global functions +====================================================================== + +<?php + + class HelloWorld { + const HELLO_WORLD = "Hello, World!\n"; + + function get_hello_world() + { + return HELLO_WORLD; + } + + function length_of_hello_world() + { + $str = $this->get_hello_world(); + return strlen($str); + } + } + + $obj = new HelloWorld(); + print "length_of_hello_world() = " . $obj->length_of_hello_world(); + print "\n"; +?> + +Example 5: Multiple derefencing of objects returned from methods +================================================================ + +<?php + + + class Name { + function Name($_name) + { + $this->name = $_name; + } + + function display() + { + print $this->name; + print "\n"; + } + } + + class Person { + function Person($_name, $_address) + { + $this->name = new Name($_name); + } + + function getName() + { + return $this->name; + } + } + + $person = new Person("John", "New York"); + $person->getName()->display(); + +?> + +Example 6: Exception handling +============================= + +<? + class MyException { + function MyException($_error) { + $this->error = $_error; + } + + function getException() + { + return $this->error; + } + } + + function ThrowException() + { + throw new MyException("'This is an exception!'"); + } + + + try { + } catch (MyException $exception) { + print "There was an exception: " . $exception->getException(); + print "\n"; + } + + try { + ThrowException(); + } catch (MyException $exception) { + print "There was an exception: " . $exception->getException(); + print "\n"; + } + +?> + +Example 7: __clone() +=================== + +<? + class MyCloneable { + static $id = 0; + + function MyCloneable() + { + $this->id = self::$id++; + } + + function __clone() + { + $this->name = $that->name; + $this->address = "New York"; + $this->id = self::$id++; + } + } + + + + $obj = new MyCloneable(); + + $obj->name = "Hello"; + $obj->address = "Tel-Aviv"; + + print $obj->id; + print "\n"; + + $obj = $obj->__clone(); + + print $obj->id; + print "\n"; + print $obj->name; + print "\n"; + print $obj->address; + print "\n"; +?> + +Example 8: Unified constructors +=============================== + +<? + + class BaseClass { + function __construct() + { + print "In BaseClass constructor\n"; + } + } + + class SubClass extends BaseClass { + function __construct() + { + parent::__construct(); + print "In SubClass constructor\n"; + } + } + + $obj = new BaseClass(); + + $obj = new SubClass(); + +?> + +Example 9: Destructors +======================= + +<?php + +class MyDestructableClass { + function __construct() + { + print "In constructor\n"; + $this->name = "MyDestructableClass"; + } + + function __destruct() + { + print "Destroying " . $this->name . "\n"; + } +} + +$obj = new MyDestructableClass(); + +?> |