вторник, 29 апреля 2014 г.

ООП

Класс это так называемый чертеж по которому будет строится класс
при  прописывании в коде class my_class класс не создается это описание
сначала класс надо проинстанцировать создается класс через
$person = new my_class {}

свойство класса это
переменная только внутри класса
class animal {
public $name;
public $age = 0;
}

$cat = new animal();
$dog = new animal;

$cat->name = 'murzik';
$dog->name = 'tuzik';

echo $cat->name;

у животного есть поведение
описывается поведение методами класса или обьекта
метод класса = функция только внутри класса 

class animal {
public $name;
public $age = 0;
function sayHello(){
 echo "Hello";
  }
}

вызвать метод  say hello класса cat
$cat->sayHello();
-------------------------------------------------------------
class animal {
public $name;
public $age = 0;
function sayHello($word){
 echo "Hello";
  }
}

$cat ->sayHello('meow');
$dog ->sayHello('gav');
 ----------------------------------
!!!!! обращение из методов к свойствам только через this !!!!
ссылка на тот обьект который вызвал этот метод
this  это тот кто вызвал

class animal {
public $name;
public $age = 0;
function sayHello($word){
 echo $this->name. ' say ' .$word;
  }
 function drawBr(){
echo '<br>'
}

!!! обращение внутри метода к другому методу этого же класса тоже через this !!!!!!!!

class animal {
public $name;
public $age = 0;
function sayHello($word){
 echo $this->name. ' say ' .$word;
 this->drawBr();
  }
 function drawBr(){
echo '<br>'
  }
}

псевдоконстанты
__METHOD__
__CLASS__ 

конструктор это метод автоматически вызывается при создании обьекта
если нужно описать конструктор то нужно писать
магические методы
function __construct($num){
echo "object #num  created" }
очень удобен дя инициализации

деструктор не принимается параметров
function __destruct() {
 echo "object #num  created" }
метод который дергается при удалении обьектов 
очередность удаления не определена
удалением обьектов занимается сборщик мусора
из деструктора не обращатся к другим обьектам
 
также конструктор можно вызвать как
 одноименный метод  с именем класса
то есть конструктор класса my class может быть вызвать чезе отдноименный метод function my class

когда удаляется обьект в пхп
- когда не ведет ниодна ссылка

скопировать обьект
$bigcat = clone $cat;
конструктор вызывается только при создании а не при копировании



Комментариев нет:

Отправить комментарий