Phpda berilganlar bazasi bilan ishlash. Berilganlar bazasini tashkil qilish va undan foydalanish



Download 0,8 Mb.
Pdf ko'rish
bet1/2
Sana02.06.2022
Hajmi0,8 Mb.
#630566
  1   2
Bog'liq
6. PHPda OOP



PHPda obyektga yo'naltirilgan dasturlash
Mirzo Ulug'bek nomidagi O'zbekiston Milliy universiteti
Matematika fakulteti
Algoritmlar va dasturlash texnologiyalari kafedrasi
Web dasturlash
Maxarov Q.T.


Abstrakt sinflar
Abstrakt sinflar obyekti yaratilmaydi. Ulardan faqat voris sinf yaratish mumkin. So'ng voris sinf 
obyektini yaratish mumkin. Ichida kamida bitta abstrakt metod bo'lgan sinf abstrakt sinf bo'ladi.
abstract class
AbstractClass
{
abstract protected function
getValue
();
abstract protected function
prefixValue
(
$prefix
);
public function
printOut
() {
print
$this
->
getValue
() .
"\n"
;
}
}
class
ConcreteClass1
extends
AbstractClass
{
protected function
getValue
() {
return
"ConcreteClass1"
;
}
public function
prefixValue
(
$prefix
) {
return
"
{
$prefix
}
ConcreteClass1"
;
}
}
class
ConcreteClass2
extends
AbstractClass
{
public function
getValue
() {
return
"ConcreteClass2"
;
}
public function
prefixValue
(
$prefix
) {
return
"
{
$prefix
}
ConcreteClass2"
;
}
}
$class1
= new
ConcreteClass1
;
$class1
->
printOut
();
echo
$class1
->
prefixValue
(
'FOO_'
) .
"\n"
;
$class2
= new
ConcreteClass2
;
$class2
->
printOut
();
echo
$class2
->
prefixValue
(
'FOO_'
) .
"\n"
;
?>


Abstrakt metodlar
Abstraks sinfda aniqlangan metod parametrlari ham aniqlanishi kerak. 
Voris sinfda qo'shimcha parametrlar e'lon qilinishi mumkin.
abstract class
AbstractClass
{
abstract protected function
prefixName
(
$name
);
}
class
ConcreteClass
extends
AbstractClass
{
public function
prefixName
(
$name
,
$separator
=
"."
) {
if (
$name
==
"Pacman"
) {
$prefix
=
"Mr"
;}
elseif (
$name
==
"Pacwoman"
) { 
$prefix
=
"Mrs"
; }
else { 
$prefix
=
""
; }
return
"
{
$prefix
}{
$separator
} {
$name
}
"
;
}
}
$class
= new
ConcreteClass
;
echo
$class
->
prefixName
(
"Pacman"
),
"\n"
;
echo
$class
->
prefixName
(
"Pacwoman"
),
"\n"
;
?>


Interfeys
Interfeyslar interface kalit so'zi bilan e'lon qilinadi. Interfeyslarda metod tanasi bo'lmaydi. 
Interfeyslarni extends orqali kengaytirish mumkin. Ularni sinf orqali amalga oshirishda implements 
kalit so'zidan foydalaniladi.
interface
iTemplate
{
public function
setVariable
(
$name
,
$var
);
public function
getHtml
(
$template
);
}
// Xato
class
BadTemplate
implements
iTemplate
{
private
$vars
= array();
public function
setVariable
(
$name
,
$var
)
{
$this
->
vars
[
$name
] =
$var
;
}
}
// To'g'ri
class
Template
implements
iTemplate
{
private
$vars
= array();
public function
setVariable
(
$name
,
$var
)
{
$this
->
vars
[
$name
] =
$var
;
}
public function
getHtml
(
$template
)
{
foreach(
$this
->
vars
as
$name
=>
$value
) {
$template
=
str_replace
(
'{'
.
$name
.
'
}'
,
$value
,
$template
);
}
return
$template
;
}
}
?>


Interfeysda vorislik
interface
a
{
public function
foo
();
}
interface
b
extends
a
{
public function
baz
(
Baz $baz
);
}
// To'g'ri
class
c
implements
b
{
public function
foo
()
{
}
public function
baz
(
Baz $baz
)
{
}
}
// Xato
class
d
implements
b
{
public function
foo
()
{
}
public function
baz
(
Foo $foo
)
{
}
}
?>


Interfeysda to'plamli vorislik
interface
a
{
public function
foo
();
}
interface
b
{
public function
bar
();
}
interface
c
extends
a
,
b
{
public function
baz
();
}
class
d
implements
c
{
public function
foo
()
{
}
public function
bar
()
{
}
public function
baz
()
{
}
}
?>


Trait
Treyt (trait) – faqat yakka vorislikni qo'llovchi tillarda kodni qayta qo'llash mexanizmi. Metodlar to'plamini bir-
biriga bog'liq bo'lmagan sinflarda ishlatish imkonini beradi. Treytning mustaqil ekzemplyarini yaratib 
bo'lmaydi. 
trait
SayHelloWorld
{
public function
sayHello
() {
echo
'Hello World!'
;
}
}
class
MyHelloWorld
{
use
SayHelloWorld
;
}
$o
= new
MyHelloWorld
();
$o
->
sayHello
();
// Hello World!
?>


Trait va vorislik
Treyt avlod sinf metodlarini qayta aniqlaydi.
class
Base
{
public function
sayHello
() {
echo
'Hello '
;
}
}
trait
SayWorld
{
public function
sayHello
() {
parent
::
sayHello
();
echo
'World!'
;
}
}
class
MyHelloWorld
extends
Base
{
use
SayWorld
;
}
$o
= new
MyHelloWorld
();
$o
->
sayHello
(); 
// Hello World!
?>


Trait va vorislik
Treyt metodi joriy sinf metodi orqali qayta aniqlanishi mumkin.
trait
HelloWorld
{
public function
sayHello
() {
echo
'Hello World!'
;
}
}
class
Universe
{
use
HelloWorld
;
public function
sayHello
() {
echo
'Hello Universe!'
;
}
}
$o
= new
Universe
();
$o
->
sayHello
(); 
// Hello Universe!
?>


Trait
Bitta sinfga bir qancha treytlarni ulash mumkin, bunda ular vergul bilan ajratiladi.
trait
Hello
{
public function
sayHello
() {
echo
'Hello '
;
}
}
trait
World
{
public function
sayWorld
() {
echo
'World'
;
}
}
class
MyHelloWorld
{
use
Hello
,
World
;
}
$o
= new
MyHelloWorld
();
$o
->
sayHello
(); 
$o
->
sayWorld
(); 
// Hello World
?>


Trait
Treytlarda bir xil nomli metodlar uchrasa insteadof operatori orqali metodlardan birini tanlash mumkin. as
operatori orqali metodni boshqa nom bilan ishlatish mumkin.
trait
A
{
public function
smallTalk
() {
echo
'a'
;
}
public function
bigTalk
() {
echo
'A'
;
}
}
trait
B
{
public function
smallTalk
() {
echo
'b'
;
}
public function
bigTalk
() {
echo
'B'
;
}
}
class
Talker
{
use
A
,
B
{
B
::
smallTalk
insteadof
A
;
A
::
bigTalk
insteadof
B
;
}
}
class
Aliased_Talker
{
use
A
,
B
{
B
::
smallTalk
insteadof
A
;
A
::
bigTalk
insteadof
B
;
B
::
bigTalk
as
talk
;
}
}
?>


Trait va ko'rinish sohasi
Treytlardagi metodlarni as operatori yordamida ko'rinish sohasini o'zgartirish mumkin.
trait
HelloWorld
{
public function
sayHello
() {
echo
'Hello World!'
;
}
}
// sayHello metodining ko'rinish sohasi o'zgartirildi
class
MyClass1
{
use
HelloWorld
{
sayHello
as protected; }
}
// Metodning psevdonimi yaratildi va psevdonimning ko'rinish sohasi o'zgargan
// sayHello metodining ko'rinish sohasi o'zgarmadi
class
MyClass2
{
use
HelloWorld
{
sayHello
as private
myPrivateHello
; }
}
?>


Ichma-ich treytlar
Treytlar o'z ichida treytlarni ishlatishi mumkin.
trait
Hello
{
public function
sayHello
() {
echo
'Hello '
;
}
}
trait
World
{
public function
sayWorld
() {
echo
'World!'
;
}
}
trait
HelloWorld
{
use
Hello
,
World
;
}
class
MyHelloWorld
{
use
HelloWorld
;
}
$o
= new
MyHelloWorld
();
$o
->
sayHello
();
$o
->
sayWorld
();
// Hello World!
?>


Trait va abstrakt metodlar
Treytlar abstrakt metodlar e'lon qilishi mumkin. Bunda treytni ishlatayotgan metod shu nomdagi metodni 
aniqlashi kerak.
trait
Hello
{
public function
sayHelloWorld
() {
echo
'Hello'
.
$this
->
getWorld
();
}
abstract public function
getWorld
();
}
class
MyHelloWorld
{
private
$world
;
use
Hello
;
public function
getWorld
() {
return
$this
->
world
;
}
public function
setWorld
(
$val
) {
$this
->
world
=
$val
;
}
}
?>


Anonim sinflar
PHP 7 versiyadan boshlab anonim sinflarni ishlatish mumkin. Anonim sinflarda metodlar, xossalar, 
konstruktorlar, treytlarni ishlatish, boshqa sinflarni kengaytirish, interfeyslarni aniqlash mumkin.
$util
->
setLogger
(new class {
public function
log
(
$msg
)
{
echo
$msg
;
}
});
?>
class
SomeClass
{}
interface
SomeInterface
{}
trait
SomeTrait
{}
var_dump
(new class(
10
) extends
SomeClass
implements
SomeInterface
{
private
$num
;
public function
__construct
(
$num
)
{
$this
->
num
=
$num
;
}
use
SomeTrait
;
});
object(class@anonymous)#1 (1) { 
["Command line code0x104c5b612":"class@anonymous" 
:private]=> int(10) 
}


Obyektlar serializatsiyasi

Download 0,8 Mb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish