PHP - част 7 (Работа с класове)
fix3d трудност:

видян:
12321
Променливата
$this
Езикът PHP използва специална променлива $this за осъществяване на
достъп до даден клас. Използването на променливата $this в PHP е аналогично на
създаването на инстанция на класа в самия клас. Следващия пример е модификация
на предишния пример с цел демонстриране на използването на променливата
$this.
<?php
class PrintName {
var $name =
"George";
function show_name() {
echo "Hi $this ->
name.
}}
$obj1 = new PrintName;
$obj1 ->
show_name();
?> |
В горния пример
променливата name се използва директно в метода PrintName с помощта на
променливата $this. Резултатът от горния код ще бъде : Hi george.
Също
така можете да промените стойността на поле в метод, което е демонстрирано от
следващия пример.
<?php
class PrintName {
var $name =
"George";
function show_name() {
echo "Hi $this ->
name.
}
function change_name($somename) {
$this -> name =
$somenaame; // Промяна на стойността
на полето name от "George" на
новото име предадено на метода.
}}
$obj1 = new PrintName;
$obj1
-> show_name();
$obj1 -> change_name ("Pesho");
$obj1 ->
show_name();
?> |
В горния пример първо
на екрана се появява Hi George. , защото се извиква методът show_name() на
обекта obj1, а стойността George е стойност по подразбиране за полето name. С
реда $obj1 -> change_name ("Pesho"); се извиква методът change_name(), който
задава стойността Pesho на полето name. След това се извиква методът
show_name(), който на свой ред показва "Hi Pesho".
Както може би сте
забелязали, методите на класове, като нормални функции, не се извикват, преди да
направите това явно. Това означава, че докато не напишете реда $obg1 ->
show_name(), методът show_name(), няма да бъде извикан. В следващата секция, ще
научите повече за методите, които се изпълняват автоматично при инстанциране на
класа ( т.е. когато се създава обект от класа
).
Конструктори
Конструкторът е специален метод на класа,
който се изпълнява автоматично, когато се създава обект от класа. Конструкторът,
по дефиниция, трябва да има име, еднакво с името на класа. Това означава, че
може да имате само един конструктор в даден клас. Следващият пример демонстрира
използването на конструктор.
<?php
class PrintName {
var $name;
function
PrintName() {
$this -> name = "Angelica";
echo "Hi $this ->
name.
}
function show_name($somename) {
echo "Hi $this ->name
!";
}}
$obj1 = new PrintName;
$obj2 = new
PrintName;
?> |
Резултатът от
горната програма, ще бъде двукратно показване на низа "Hi Angelica !". Това е
така, защото методът PrintName се изпълнява при всяко създаване на обект от
класа PrintName.
Разширяване на клас - наследяване на
класове
Най-добрата черта на създаването и използването на класове е
възможността да ги използвате повторно. Можете да създадете класа веднъж и след
това да го използвате и в другите си програми. Това ви помага да си спестите
много време. Езикът PHP, както и много други езици за обектно ориентирано
програмиране, разширява преизползваемостта на класовете, чрез реализация на
механизма на наследяване. Наследяването ви позволява да създавате нови класове
на базата на вече съществуващи. Тази стратегия ви позволява да използвате
повторно необходимите методи и променливи в дъщерния клас и същевременно да
добавите само допълнителната функционалност, като по този начин пишете по-малко
код. Класът, чиито код се използва повторно се нарича родителски
клас.
Трябва да използвате ключовата дума extends, за да декларирате, че
класът наследява съществуващ клас. Синтаксисът е следния:
име_на_класа
extends име_на_родителския_клас
Наследяването се прави от родителския към
дъщерния клас. То се изразява в това, че даден обект от дъщерния клас има достъп
до полетата и методите на радителския клас, но обектите от родителския клас
нямат достъп до дъщерния. С други думи, обектът от родителския клас не може да
използва методите и полетата на дъщерния клас. Следващият прост пример е за
наследяване в PHP.
<?php
classParentClass {
function show_message() {
echo
"Hi! This comes from the parent class.";
}}
class ChildClass extends
ParentClass // Наследяваме класа ChildClass от класа
Parent
{
function show() {
echo "Hi This comes from the child
class."
} }
$obj1 = new ParentClass; // Обект от
ParentClass.
$obj1 -> show_message (); // Правилно - тъй като obj1
е обект от
// ParentClass и извиква метод от същия клас
$obj2 =
new ChildClass; // Обект от ChildClass
$obj2 = show(); // Правилно
- тъй като обект от класа
// ChildClass има достъп до методите на
родителския клас.
$obj2 -> show_message(); // Правилно - тъй като
обект от класа
// ChildClass има достъп до методите на родителския
клас.
$obj1 -> show(); // Грешно, защото обект от класа
ParentClass
// няма достъп до методите на дъщерния клас
ChildClass
?> |
В горния пример са
декларирани два класа - ParentClass и ChildClass. Както се подразбира от името
му, класът ChildClass наследява класа ParentClass с помощта на ключовата дума
extends. Обектът obj1 е обект от класа ParentClass, а obj2 е от клас ChildClass.
Когато обект obj2 извиква метода show_message() на класа ParentClass, на екрана
се появява съобщението Hi ! This comes from the parent class.
Това е
възможно, защото класът ChildClass е наследник на класа ParentClass и има достъп
до полетата и методите му. От друга страна, когато обектът obj1 извика метода
show() на дъщерния клас ChildClass, PHP извежда съобщение за грешка. Това е
така, защото методите и полетата на наследения клас са недостъпни за родителския
клас ParentClass.
източник на урока:
http://www4u.search.bg
Коментари (2)
примера:
не работи
и това не е само в този урок ами всичките части с уроци са пълни с грешки.
Добрече съм работил с обектно ориентирани езици та поне знам как да оправам грешките ама някой който си няма идея и сега навлиза в нещата просто няма никакъв шанс да разбере от тези примери за какво става дума