
  __construct()
PHP 5   -. 
,    -,         , 
     , , , 
 -     . 
,     ,     __construct(), 
      . 
  -   . 
  ,    , 
    parent::__construct().

<?php
class BaseClass {
     function __construct() {
         print "  BaseClass\n";
     }
}

class SubClass extends BaseClass {
     function __construct() {
         parent::__construct();
         print "  SubClass\n";
     }
}

$obj = new BaseClass();
$obj = new SubClass();
?>
 PHP 5      __construct(), 
     ,    , 
    .        , 
       __construct().



   ,    __destructor()
PHP 5   ,   ,      , ,  Java:      ,   ,   ,   __destruct(),   .

<?php
class MyDestructableClass {
     function __construct() {
         print "\n";
         $this->name = "MyDestructableClass";
     }

     function __destruct() {
         print " " . $this->name . "\n";
     }
}

$obj = new MyDestructableClass();
?>
     , ,    , 
   .   ,   -, 
    parent::__destruct().



  
           . ,       -    ,      ,        , ,         .

      clone (   __clone() ,   ).     __clone(),       ( ,        ).

copy_of_object = clone $object;
     , PHP 5 ,        __clone()  .  ,    __clone(),   ,     .   __clone()  ,          .  ,    ,      -,            .    :

<?php 
class MyClass { 
     function __clone() { 
         print "   "; 
     } 
} 
$obj = new MyClass(); 
clone $obj; 
?>




 
      ,    ,  .          .       ,             $.     ,  ,   ,      ,    .

<?php 
class MyClass { 
     const SUCCESS = "Success"; 
     const FAILURE = "Failure"; 
} 
print MyClass::SUCCESS; 
?>




  
        (  ),      .       :

<?php 
class Singleton { 
     static private $instance = NULL; 

     private function __construct() { 
     } 

     static public function getInstance() { 
         if (self::$instance == NULL) { 
             self::$instance = new Singleton(); 
         } 
         return self::$instance; 
     } 
} 
?>



 
      ,       .       $this,        .

<?php 
class MyClass { 
     static function helloWorld() { 
         print "Hello, world"; 
     } 
} 
MyClass::helloWorld(); 
?>



 
PHP 5      .   ,    , . ,        ,     . ,   , ,  ,        - .            abstract,       . ,     .  :

<?php

abstract class AbstractClass {

    /*         */
    abstract protected function getValue();

    /*   */
    public function print() {
      print $this->getValue();
    }

}

class ConcreteClass1 extends AbstractClass {

    protected function getValue() {
      return "ConcreteClass1";
    }

}

class ConcreteClass2 extends AbstractClass {

    protected function getValue() {
      return "ConcreteClass2";
    }

}

$class1 = new ConcreteClass1;
$class1->print();

$class2 = new ConcreteClass2;
$class2->print();
?>




 
     abstract,       . ,    ,     abstract.

<?php 
abstract class MyBaseClass { 
     abstract function display(); 
} 
?>




   
      ,    .       ,  .

<?php 
function expectsMyClass(MyClass $obj) { 

} 
?>



  ,   .
 PHP 4      ,    .           .

  .  PHP 4:

<?php 
$dummy = $obj->method(); 
$dummy->method2(); 
?>
 PHP 5:

<?php 
$obj->method()->method2(); 
?>




PHP 5         - , ,      foreach.  ,      ,   public.   :

<?php

class MyClass {
   public $var1 = 'value 1';
   public $var2 = 'value 2';
   public $var3 = 'value 3';

   protected $protected = 'protected';
   private   $private   = 'private';

}

$class = new MyClass();

foreach($class as $key => $value) {
   print "$key => $value\n";
}
:

var1 => value 1
var2 => value 2
var3 => value 3
  , foreach     public-.
