, , .
( ), , , . , . . . - :
− ;
− ;
− ;
− ;
− .
(encapsulation) , , , . , .
(inheritance) , . , - , . :
();
.
(polymorphism) , , .
, , . , " , ".
, , .
PHP Java, C++. -, . var PHP4 private, public protected PHP5. function . :
<?php
class Mycart
{//var $items=0; PHP4
private $items=0; // PHP5
public function add ($n) // $n
{
$this->items += $n;
}
public function remove ($n) // $n
{
if ($this->items > $n) {
$this->items -= $n;
return true; }
else { return false; }
}
public function show()
{
echo '$items=', $this->items;
}
}//
$instance=new Mycart();
$instance->add(5);
$instance->remove(2);
$instance->show();
|
|
echo $instance->items;//
?>
:
$items=3
Fatal error: Cannot access private property Mycart::$items in x:\home\localhost\www\my\pr41.php on line 25 private items
$instance , new. (handler), .
, : , . , $this, ' '.
PHP 5 public, protected private, .
(public) . (protected) , , () .
(private) , .
, public. , PHP 5 var, . PHP4.
PHP . , . . - . PHP4 . PHP 5 __construct(). __destruct() .
<?php //pr21
class MyClass {
private $property;
function _construct() {
echo " ";
}
function __destruct() {
echo " ";
}
function MyClass($n=1) {
echo " ";
$this->property=$n;
}
}
$obj = new MyClass(); // " "
unset($obj); // " "
$obj1 = new MyClass(10);
?>
PHP4, , PHP5 . PHP 5 : __construct(), PHP , .
, .
. , , parent.
|
|
<?php //pr22
class MyClass {
function __construct() {
echo " ";
}
function __destruct() {
echo " ";
}
}
class DerivedClass extends MyClass {
function __construct() {
echo " ";
parent::__construct();
}
function __destruct() {
echo " ";
parent::__destruct();
}
}
$obj = new DerivedClass();
unset($obj);
?>
:
/:
<?php
class Dateclass {
var $month=array("", "", "", "", "", "", "","","", "", "", "");
var $day=array ("", "", "","", "", "", "");
var $dnum; var $mnum; //
var $daym; var $year;
function Dateclass() { //:
$this->dnum = date("w");
$this->mnum = date("n");
$this->daym = date("d");
$this->year = date("Y");
}
function show(){//
$dnum =$this->dnum;
$mnum = $this->mnum;
$daym =$this->daym;
$year = $this->year;
$textday =$this->day[$dnum];
$monthm =$this->month[$mnum-1];
if ($mnum==3||$mnum==8)
{ $k=""; }
else {$k="";}
echo ": $textday, $daym $monthm$k $year .";
}
}
$obj=new Dateclass();//
$obj->show();//
?>
:
: , 05 2009 .
PHP 5 , , . , . , :
<?php //pr24
class MyClass{
public $property=1;
}
$obj1 = new MyClass;
$obj2=$obj1;//
echo $obj1->property; // 1
$obj2->property = 2;
echo $obj1->property; // 2
$obj3 = clone $obj1;//
echo $obj3->property; // 2
$obj3->property = 3;
echo $obj1->property; // 2
?>
clone, __clone() . __clone() , , :
<?php
class MyClass{
var $property;
function __clone() {
$this->property = 2;
}
}
$obj1 = new MyClass;
$obj1->property = 1;
$obj2 = clone $obj1;
echo $obj1->property; // 1
echo $obj2->property; // 2
?>
__clone() , $this $that.
.
<?php
class MyClass extend MySuperClass implements I1,I2,I3{
//
}
?>
, . .
<?php
abstract class MySuperClass {
abstract public function abstrFunc();
}
class MyClass extends MySuperClass {
public function abstrFunc() {
|
|
echo Be-Be-Be;
}
}
$obj = new MyClass;
$obj->abstrFunc(); // Be-Be-Be
?>
, . , ( ) . , , .
(interface) , . function - , abstract .
<?php
interface Int1 {
function func1();
}
interface Int2 {
function func2();
}
class MyClass implements Int1, Int2 {
public function func1() {
echo 1;
}
public function func2() {
echo 2;
}
}
$obj = new MyClass;
$obj->func1(); // 1
$obj->func2(); // 2
?>
, , .
PHP 5 (final).
, final, , .
<?php
class MyClass {
final public function func() {
//
}
}
class MyClass1 extends MyClass {
//
//
// MyClass
public function func() {
//
}
}
?>
, final , .
<?php
final class MyClass {
//
}
//
//
class MyClass1 extends MyClass {
//
}
?>
final, , , final .
Java, PHP . PHP .
<?php
class MyClass {
const CONSTANT = " ";
}
echo MyClass::CONSTANT; // " "
?>
PHP 5 .
<?php
class MyClass {
static $static = 1;
}
echo MyClass::$static; // 1
?>
PHP . . . , .
, , . .
<?php
class MyClass {
static function statFunc() {
echo " ";
}
}
MyClass::statFunc(); // " "
?>
$this, , .
|
|
instanceof PHP 5 , - .
<?php
class MyClass { }
$obj1 = new MyClass();
if ($obj1 instanceof MyClass) {
echo "\$obj1 - MyClass";
}
class MyClass1 extends MyClass { }
$obj2 = new MyClass1();
if ($obj2 instanceof MyClass) {
echo "\$obj2 - , MyClass";
}
interface Int { }
class MyClass2 implements Int { }
$obj3 = new MyClass2();
if ($obj3 instanceof Int) {
echo "\$obj3 - , Int";
}
?>
instanceof , .
PHP 5 (dereferencing) , .
<?php
class MyClass1 {
public function showClassName() {
echo " MyClass1";
}
}
class MyClass2 {
public function showClassName() {
echo " MyClass2";
}
}
function deref($obj) {
switch ($obj) {
case "MyClass1":
return new MyClass1();
case "MyClass2":
return new MyClass2();
}
}
deref("MyClass1")->showClassName(); // "
// MyClass1"
deref("MyClass2")->showClassName(); // "
// MyClass2"
?>
, .
PHP 5 (class type hints), .
<?php
interface Int1 {
function func1(Int1 $int1);
}
interface Int2 {
function func2(Int2 $int2);
}
class MyClass implements Int1, Int2 {
public function func1(Int1 $int1) {
//
}
public function func2(Int2 $int2) {
//
}
}
$obj1 = new MyClass;
$obj2 = new MyClass;
$obj1->func1($obj2);
$obj1->func2($obj2);
?>
, .
, __construct, __destruct, __call, __callStatic, __get, __set, __isset, __unset, __sleep, __wakeup, __toString, __invoke, __set_state, __clone, _, PHP .
__get($name) __set($name,$value) . .
__set() , . __get() __set() , .
<?php
class MyClass {
private $properties;
function __set($name, $value) {
echo " $name = $value";
$this->properties[$name]=$value;
}
function __get($name) {
echo " ", $name;
return $this->properties[$name];
}
}
$obj = new MyClass;
$obj->property = 1; // " property=1"
$a = $obj->property; // " property"
echo $a; // 1;
?>
PHP 5 __call().
<?php
class MyClass {
function __call($name, $params) {
echo " $name $params[0]";
}
}
$obj = new MyClass;
echo $obj->method(1); // " method
// 1"
?>
__call() .
PHP 5 - __METHOD__ .
<?php
class MyClass {
public function myMethod() {
echo " ", __METHOD__;
}
}
$obj = new MyClass;
$obj->myMethod();// " MyClass::myMethod"
function myFunction() {
echo " ", __METHOD__;
}
myFunction(); // " myFunction"
?>
__METHOD__ .
PHP 5 - __toString().
<?php
class MyClass {
function __toString() {
return " __toString()";
}
}
$obj = new MyClass;
echo $obj; // " __toString()"
|
|
?>
__toString() .
PHP 5 . try/catch/throw .
<?php
try {
$fp = @fopen("file.txt", "w");
if (!$fp) throw new Exception(" !");
//
fclose($fp);
}
catch (Exception $exception) {
echo " ", $exception->getLine();
echo $exception->getMessage(); // "
// "
}
?>
catch. , Exception.