صفحه 1:
فصل: ششم(اشیای داده)
ورد ی
استاد:
دانشگاه:
ارائه دهندگان:
صفحه 2:
امنیت و کارایی-
هنكام استفاده از يايكاه هاى داده ممكن است ساخت يك رشته |50 در رديف قوانين
SoD ee Eee Tee Ente ا Le Dies)
اين رديف ها حتى نبايد از نحوه ذخيره سازى اطلاعات (فايل متنى» رن
ذخیره شده مطلع باشند هرگونه اطلاعاتی که ذخیره میشوند باید از ردیف قوانین تجاری به ردیف دادهها ارسال
شوند.
ner res tree eey) ۳ 020
به اين ترتیب ردیف رابط و ردیف قوانین تجاری از هرگونه تغییرات در نوع متدهای ذخیره سازی( فایل
ore y ile ey Sie > rere ele ro Comy cree ele | Mery ل
دريافتى) و آيتم هايى كه از رديف داده بركردانده شده اند بايد در طول حيات برنامه بدون تغيير باقى بمانند. تا
زمانی که این موارد بدون بمانند هنكامى كه تغييراتى در رديف داده روى مىدهد در ساير رديف ها نبايد
باز به اعمال تغييرات وجود داشته باشد.
One Tee) ا ا eee hte See
این کار باعث بروز یک حفره امنیتی بزرگ در برنامه میشود .
0 ole ws BSS Eko By ees eee (| eset ep Teles DE e lst ee eae Sey
ERIS nes ee Teele Shee feo Lee Nee eee eee ores oe ie SEM) a Pana
برای یک دستر 50۱ ۷۷۲۱۴86 نیز ایده بدی است زیرا ممکن است به هکرها اجازه دهد هر ترکیبی از داده ها را در پایگاه داده حذف کنند یا تغییر
۳
صفحه 3:
BP MOS TO ا ل ا ا EC EES ioe Coe]
حذف اطلاعات است
0 Ese Pe SS Tee Tey es Eee rei Bye for Ce Tes PE Case he
FUnts TPO PTC CS UTM ES EPPO ee LS 7
PSB eee re Ny Ube Mose pa wes eee es] rte prot emer ies eset
0 700
نگیداری و اعمال تغییرات در اطلاعات در حافظه سرور » به جای مکان تخیره سازی بسیار کارآمدتر است . ذخیره اطلاعات ؛ فقط
ee Priel perspec is Te اا 1[
اا POPES eee Pers ee penta an Core PESTS TIS > ies
(Ge pres es Uwe ere ey cee ice pt fo eee Sree
PPOLMLDTES MES TCTs Cote eB le aM ا Sige ere pe ا ere
ای خودکار فراهم می کند . با فرض اینکه یک نمونه از کلاس دادهتنها در صورت وجود الزام برای به روزرسانی اطلاعات ؛ ایجاد
. خواهد شد
سازنده کلاس می تواند برای بازیابی اطلاعات از مخزن ذخیره سازی و قرار دادن آن در حافظه سرور استفاده کند هنگامی که شی داده
1 ۱
اطلاعات از حافظه به مخزن ذخیره سازی به کار برد
صفحه 4:
class dog dita
1
finction __construd
{
Samlile =file_ge_contents(get_dog_application( datasterage")),
simpleanl loed_string@zml file)
ruy)$onlstang,
print_nSanzy
به فراهم سازى اطلاعات سودمند از يك فايل 1/الابسيار نزديك مى شود . مثد aa 0186145©_غ0©6_ه11 يك فايل متنى
ا ا ا ل 22
اين نمونه سازند
را باز میکند . محتویات را درون یک رشته قرار می دهد و فایل را می
TOL Ey و نب 9
دا
Cee
تلاش مى كند تا داده 1/11ا را به يك أرايه تبديل كند . اين دستور (/اق2.1) تلاش مى كند تا از تبديل نوع استفاده كند . eve easyer atl) ee
586
صفحه 5:
<?xml version="1.0"
<dogs>
<dog>
ame>Woik/dog_name>
eight>12</dog_weight>
<dog_coler>Yellow</dog_coler>
<dog_breet>Lab</dog_breed>
<idog>
<dog>
<dog_name>San</dog_name>
<dog_weight>10</dog_weight>
<dog_oolor>Brown</dog_color>
<dog_breed>Lab</dog_breed>
</dog>
</dogs>
Amay (dog] => Array (0] => Simp leXMLElement Odjet (do;
[dog_weight] => 12
[dog coler] => Yellow [dog breed] => Lab )[1] => SimpleXMLElement Cbject
((dog_name] => Sam
[dog weight] => 10 [dog_coler] => Brown [dog_breed] =>Leb
صفحه 6:
cless dog dita
finction __constrid)
{
Sxmlile =file_get_contents(get_dog applicationt datastorag
= simpleanl loed_sinng@ynléle,
json_moodeanisinng),
print_r(Sjson),
}
}
}
{'dog* ((*dog_ name’ Wolf," dog_weight! 'dog_coler*:*Yellow’,'dog_breadt *
"},{*dog_name'
,"dog_weight?:*10"," dog color’ *Brown','dog_breed* “Lab* ([(
اخت 150101 تغيير مى دهد . شما مى تو
ا ا 00
ls sslPHP در json_encode a:.
Aa Se) 0 eae
صفحه 7:
class dog dita
findion _ const)
{
891210 = fle_get_contents(get_dog_application(* datastornge'))
$xmlstring= simplex! load_string@emnlfile),
$)son=json_encode$xmlstring),
$dogs_aray = json_deoode!
print_xSdogs_amay),
}
Amy (dog) =
Amy (
(0] => Array (dog_name] => Wo [dog_weight] => 12[deg_color] => Yellow
(dog, breed] => La
]1[ << Angy (dog_name] => San [dog weight] => 10 [dog color] => Brown [dog_breed]
=> Lib )))
همانگنه که می توانید بینی. دیگر تریبی از آرایه ها وشیا و
و و ا 0
eee Dene
52200000000
)با تلم ستون ارجاع
“7 از کلمات کلیدی ۱
1 ere ues ote eer ure eres een on
lM RR em el MCD) اين سطرها و ستون هارا مى توان با استفاده از برخی تکنیک هایی که در فصل های پ
1010101 1 0
ونین تجاری) ۰ اطلاعات را به مكان ذخيره سازى در مخرب باز خواهيد كردا
صفحه 8:
private $dogs_aray =s:rayO, // deSned as an emply array initially
fimction __constructO
fran file = file_get_contentsg¢e_dog_applicationt’datastorage ».
Sanlsinng= smplecnl load_stangG-anlsle,
$json =jsen_moode(anisinnp,
Sthis->dogs arnay =json_deodejson, TRUE),
2
finction __destructO
<
Sanlstnng = "<?xml vasion="1_ 0" encoding— UT F-S*?>",
Sonlsinng =*\n<degsin*,
Sxeeach Cthis->dogs_armay as $dogs=>$dogs_value ¢
dogs value as Sdog => $dog_value) ل دم
€
Sumlstring .="<Sdogs>\n*,
Breach (Sdog_value az $oclumn => $oclurmn_valuc)
<
Sumisting =*<Scolumn>* Sdog_value[$colurm]
>
Sxmistring .=*</$dogs>\n".
“</Scolumn>\n*,
صفحه 9:
EE STE oer es) ا ا ا ل ا ل ل ا ا
ا ا اا ا ا ااا ا 0
اولین حلقه ۴0/۴۸۲۷ برای عبور از اولین آرایه (005 )به کار گرفته می شود .
۱
۳ 03 1=) Clg eae oe eee)
سومین حلقه؛ نام ستون ها را بازیابی می کند (از 201111/۱!6) و آنها را درون تگهای ۱۱/1 قرار می دهد .
ene 6S Cnr eee Ste Eee TO) KO UI CEES Cee لل ا ل ا
همان تك ها و ساختارهاى مشابه تك ها و ساختارهاى موجود در فايل 1/11ا را فراهم مى كند .
باشید که هر خط شامل یک کاراکتر خط جدید ( (1برای نمایش خطوط مختلف موجود در فایل است .
oes
ETT eee Te eee te SE eS SE es ESE Te ا
۱0 A VIMCHIN CC WEE See een rer eee om (VON ل ل IRCHE Ce Cee cay
Fe) me) C] = LOL WY Vs (ONO) \ omg | =i OOO) \ N= DERM oe eos eS فايل؛ اقدام به استفاده
at
صفحه 10:
تجزیه 261۷/1 بیِ لازم است یک
0 4) | pce
FRE Co re ene pe NTE ل را OUT
Suey ea oer ST Perea QU
aay =arayQ, defined as on empty aray initially
» ntanal_arorstrie),
et_contents(get_dog_application(' datastorege')
load_stringanlale),
Failed loading XML
(ibztnl get_evers) 25 Serer) {
SareStnng =Saror->message *
throw new Exception(SererString), }
صفحه 11:
ne eerie ا لا ا ا ا ا ل
.متد ( عدءع) 1015ع_اهورقغ10_ع5نا:01 6 ]اين خطاها را برطرف مى كند.
رن
VE) eer ee ge ee ean ا ا 1
eae ah Lece eS ee eee MOM ales alee
استفاده می کند . هنگامی که تمام خطاها گردآوری شدند » با ارسال 6۳۳0۳5۲۳۱۳95 استثنایی آشکار خواهد شد .
همان طور که در فصل ۵ نشان داده شده برنامه 1۳66۳۲066_ 409 این خطا را دریافت خواهد کرد و آن را ارسال می کند .
اين مثال ۰ یک فرض نامناسب را در نظر می گیرد)که مثل را ساده می کند( . این مثال فرض را بر اين می گذارد که 6۲۲۵۲5۴95از
is POTENT erCan MIS e hice Ir ee bah Ree ee I 1
515 ازاز اين اندازه فراتر رود . اين محدوديت را مى توان در قابل ييكربندى 5118 تنظيم كرد.
00 ال ا ا E EE
انجمنی چند بعدی را تنظیم کنند . اجازه دهید م ا ا ل ل ل آن را دیده
ul
در برنامه ۲6۵06۲۲۵۲۱09 (در مثال ۵-۸) متد 061616۳660۲۵ را ساختید . این متد برای آرایه های چند بعدی با قاعده ( منظم ) به کار
اكرفته شد .
صفحه 12:
) (مداهت_ دوهی
breach Sdogs Solum:
{
$4ogs_value{$J][Scolumn] =$dogs_valuel$J +
1[Scolumn],
ced وات
dogs array («size$ +
ها می توانند از اشاره گر
كه قراراست حذف شوند[ ةمع 10/06 9 0ع )
صفحه 13:
BPMs (ole (IB ا eee sen) dV |B cise (ole pea eee yep poke ee Eee ee)
PNB ABN ا Pees ewe Prey Ne olor BY ole -1- (api me ما
SRN SOB Ee ESE IS See SY ee (ole ene, mee nee ooo: ا ا ل RECS ECR ETSY
۱
( يك ارايه با مقاديرى در ی ای یی ۱
ees ee م م ا بت نس ياك
متد دامع براى تعيين اندازه أرايه 009 استفاده مى كند . متد 051ا0عاندازه أرايه را برمى كرداند و نه آخرين موقعيت آرايه . بنابراين» شمارنده حلقه بايد كمتر از
(<) اندازه ای که از 0۱001 برگردانده شده است باشد . یک واحد از اين مقدار کم میشود . آخرین مکان آرایه , دیگر مورد نیاز نخواهد بود که همین امر باعث کاهش
تعداد حلقه های مورد نیاز به اندازه یک واحد می شود
در مثال فصل ۵ یک حلقه 0۲برای واکی در ستون از سطر و قرار دادن آن در سطر بالا به کار گزفته میشود . با یک آرایه انجمنی ۰ از یک حلقه 0۳636]
استفاده می کنید ۰ پارامتر 0۱0000۳5 شامل نام ستون است ( [8 حاوی شمارء سطر است ) تا مقادیر موجود در ستون ها را در مکان های مناسب قرار دهد . پس از
ern ae oe [ree om ee ep kere Pena e eek ee Pees) ee Tene EC 1۱
Preven Me IS es PCPS or ee ee Sede nee ale ote تقريبا در هر زبان برنامه نويسى مى توان از منطقى مشابه
Web mee oer bee Need | ere ee Se Peres Ene eke ا nee S mee)
ee eee Lee eet bees en. ee ee ya eee cee ee ee rer ey
Bese ern feo eee en eee n eS See eee eo eee are ee Is)
er need eee eee eee oe See he er elec SR eee cea LN
۱ Se ee e191 eee ee eet ee ie hee he ne eee
صفحه 14:
finction readR ا وم
iffrecordNumb "ىق
retum shis~ dogs ray doe't
retum $his>dogs_array["dog"][SreconiNumb ay];
۳
همان گونه که مشاهده می
0 تنسبت به متد 015013۷8660۲05
این متد به برنامه فراخوانی کننده واگذار می شو
)در صورت نیاز ( ۰ به خاطر
ی می دهد » نه در ردیف داده ها ( ردیف قوانین تجاری ) .
شید که نمایش و قالب دهی خروجی در
ازه می دهد تمام رکوردها یا رکو
ROR Ce herr ony yee es
رکورد خاص مورد نظر) چه با تمام سطرها یک آرایه را برمی گرداند . هنگامی که تمام سطرها برگردانده میشو (
| 0 er eh ES Secs Sr BTC) eer ecru nee VI Ba Be
متد 5۵1660۲05 یک آرایه انجمنی را با نام اندیس هایی که قبلا اشاره شد» می
5 ها براى فايل never
ا ل
rr SA aa
صفحه 15:
finction insetReconis(Srecords_avzy)
{
Sdogs_may_size = coumt(Sthis->dogs_arayl"dog"D,
fex($I=0,$1< count $reccrds_arey), $144)
{
Sthis->dogs_anay[*dog' I'Sdogs_anay size + SI] =$reconds_mrzy[S],
فرآيند ساخت cua 000 بااستفاده از تقليع SJSON
De ih گر غابل 2۲ ,009_012 تن
Pale
ال بر ار
Re oe Pe ean)
ار ضور
کنونی ل ل رك ا ا ا ات ل ا ا . متد
ساختار 101 براى تعيير ge Mar eas 0
۳ ارايه را توليد مى PROCS eS AEN e ere:
ی ولرد کردن یک رکو ار قرار
PPE Wir a
. از آنجایی که ند
۱۳۳۳ ل ار سر i
صفحه 16:
۰
۳ i essary
از برای قرار دادن یک رکورد ) . در تکرار بعدی در حلقه رکورد دوم در 2701/5 5660805 ( 8اتوسط حلقه فزایش یافته است)
ما 7 ج اولین رکورد است.
که دیگر رکوردی در ۲۵60۲053۳۳۵۷5 باقی نمانده باشد . به هر حال ۰ این متد نیز
.مانى كه به عنوان يك آرايه انجمنى ارسال شود ) . اين علقه تنها يك بار أرسال خوافه كن cs ain cn er
eer
Se ers ey
حلقه تا زمانی آذآمه می
fiction updateReconds(Srecords_ssrzy)
foewech (Srecords_amyy a: Srecerds=>drecerts valu) {
foreach Greconts value as Srecord => Srecord_value) {
Sthis->dogs_aray{'dog'|(Srecords) = Srecerds,aray[ records)
ا که به ازاء
ی هر موقعیت موجود دز ارایه دازای مقداز
eecn د
Re ee eer rence
اين متدها را مختصراً بررسى تنها دو تگ 6وجود دارد که در این متدها گنجانده شده اند(009,0095) ,حتی این دو تگ را نیز می توان از فایل
1/(بازیابی کرد . در هر صورت
» این فرض که
001000001 0001 (Uae eer)
| (dog_bread , dog color , dog_weight , dog_name) S22 s4S ali 4815
اعمال کرد.تگ ها
صفحه 17:
موه intemal م۳
SxmiDoc= new DOMDocumentO;
]رس تاه وود وه لک existe 6۱
SemiDoe-lond¢eSdog applcatlms.xml")
SsearchNode= SxrnlDoc> geUFlanautsByTagNamet type);
Foremdy(SsearciNode as SsearehNode)
‘SvaluelD = SvearchNode> geeatributecID),
ifgvahuelD—"dalastorage’)
‘Sxanll.ocation = SsearchNode-
>gaElementsByPagName("locstian”
مادام لو ‘Sthis>dog. dat
وود
0
cls {throw new Exception¢’ Dogapplicatians xml file missing or corrup
le_get_contents(hisodog_data zl),
Snnlstnng=sinplemml:load_stnng(Sumlile,
0 fils) {
ScrerStnng = "Failed loading XML",
EreochGibranl get_creesQ) as Sac) {
] Serr >imessage
wow new ExceptienSaversting), }
S)son=json_encode($mmistring),
رده تیدا دح = json devodijson, TRUE),
)
مسمسلا منتفدة
صفحه 18:
مثال ۶-۱
Dog_data.php
Sxmlstring .="in<dogs>\n’,
بو value)
Semlstiag =*<$dog>\n',
zreach ($40g value 23 $20
‘Soohunn_value)
smn". $dog_value(Scoluma)
*</Scoluma>',
تاه
dogs>in,
s->dog_ dete_xml, Sxmlstning)
fiction deleteReccrd(SrecerdNumber)
1
] (this >dogs_aney as Sdogs=> dogs value) {
لک هلق > count(Sdcgs_valud)
fireach (Sdogs_valud $1] ده Scolum
4
Sdogs_ valudSJ[Scolumn] = Sdogs_y
ل
1
unset (Sdogs_valuefccunt(Sdogs_value) -1D),
)
fiction readR eoords(Srecoré Number)
صفحه 19:
SecerDenber
retum Shie->dogs_aray{tdog")
مثال ۶-۱
else
{
Dog_data.php
is->dogs_anay( dog" ISreoord ener),
ره دننامه هنم
1
۳۳۴ تنها ل ل 0 ار ل
Stes are ey ops ey se +] = Sees are Rot ten error ne mse: me Teton
1 و نام فایل ]20 که حاوی داده های مربوط به است اضافه ميشود.
finction updateRecerds(trecords_aray)
fereach (records aay as Srecerd
fread) Giecords_yalue 25 Srecord
{
Sthis->dogs_aray{"dog'I[Secords] = Srecords_array{srecords},
}
بل 009-0313۰101
صفحه 20:
<?php
| php*),
Stester =new dog_datzO,
Sreconds_aray = ۳
مثال ۶-۲
testdata.php
Srecords_aray
ale Ges ->reaRecords(* ALL’
Sreca
1=>Amy ree
"dog. breed"
ester >updteR ecords(Sreconds_arsy),
t_r Glester->readRecords(ALL?
مثال2- برخی از سناریوهای ممکن را با ستفده از کلاس 618۰ _009تست و بررسی می کند. توجه داشته باك
re ween ا eens Sens زر
بد كه آخرين خط اين كد اقدام به
فراخوانی مخرب(ذخیره سازی داد
500
شی میشود .
ا 70 ep fer seieteereferece Ep I ل
Be Jone ere = ee Le TEES SE ecresSeD)
صفحه 21:
JSON ol
اجازه دهید به مطالب قبلی باز
هنگام استفاده از سا ۳1[
مو توانايى خوائدن و نوشتن داده هاى 15010 را بررسى كن
ا ا ا ا Ree Ree
ee Pe ا ل ا
$json= file_get_conts Rau ->dog_data_JSON),
1 on_decode($}son,T RUE),
if (Sthis>dogs_avay null && json_last_arer) I= JSON_ERROR_NONE)
{
throw new Exception? JSON aror- *. json_lsst_aror_msg0),
json 06 33
001 1171-7
Perr errr ctr rete)
صفحه 22:
داده های 5077[
>dogs_aray),
>dog_ data JSON, $json),
aS De hes ties nase s Tella y
متد ©7©00ع_خ]ووزداده هاى آرايه نجمتى را به قالب 50110[ تبديل مى كند .
سيس متد 017661185©_نام_18/ اطلاعات را در مكان مناسب فايل [501إقرار مى دهد .(000_0363_[50895<-5أط)
و Bee ree
توجه :
یک نمونه برنامه با استفاده از داده های 501[ در وب سایت کتاب تحت فصل ۶ موجود است.
JSON}
7 ۱ ۱
ee eee eee eee
صفحه 23:
یادی را صرف یا
1
1
۲۳۷5۵۲ از زمان انتشار 0/005,5]حذف شده است, توصیه میشود که از /۲۱۷50با !۵010-۲۳۷5۵ استفاده شود
mysqli =mnysqli_oonnect(Ssaver, $db_usamane, $db_password, Sdstabase),
(mysqli_conned_amoQ)
rod لايك
throw new Exceplicn¢ MySQL connedion avor * mysqli_connect_arort Sac Benne
$sql="SELECT * FROM Dogs",
Sresult=mysqli_quey(Soon, $59),
Té$result—null)
throw new Exceplion(’No records retneved fom Database"),
Sthis>dogs_aray =mysqli_ftch_sssocSres
mnysqli_fee_result(sves
mysqli_closeCfeen),
صفحه 24:
ى از كدهاى مورد نياز براى مند سازنده مربوط به برقرارى اتصال ١ بازبابى و قطع ارتباط با بايكاه داده است .
ti mysqli_connect x.
PSC AMEE | 8-15-1100) 60 6:9 PREPS ل ا ا را ها PSO
اال بایگاه داده استفاده میکند.
۱۳۳ را ا زا CA]
اکر میج خطایی موجودنباشد .یک عبارت ( [۹56) 58167 560 بای بازیابی تسام رکوردهاز جدول 10095 در پایگه ده به کار گرفته می
0 0 ا ل ا ا ل 0 0 ا Ey CC
داده ها رااز 9]الا5ع]آزاد مى كند. mysqli_free_result =,Le
50 0 0 ل ا || Me (es=y ava
1 ا ا Oe od
صفحه 25:
Srysqli =new mysqli(Ssever, $db_usemame, $4b_passvond, Sdetabase),
if (mysqli->conned_ame)
{
:
12 Senysql:->quey(DROP TABLE IF EXISTS Dogs") ||
(Smysql:->quey¢ CREATET ABLE IF NOT EXISTS Dogs (dog_1d CHAR(4),
dog_name CHAR
dog_weight CHAR(G), dog_color CHAR(5), dog_breed CHARGS)') )
{
throw new Exception('Dog table cantt beawated or deleted Emer: " . ,فده < نلودريدة
1
foreach (Stius->dogs_amay a5 (#نالهب_عومل؟<سمومل5 )
Ereach Gdegs_value as $dog => Sdog_value)
{
throw new Exexption(’MySQL connedion eror* Snysqli->eonnect_ercx),
Silog_id= dog وم تن
one= Sop value doy. sare)
og valuel*dog_wesght)
و عادو
Siog_breal = $og valud'dog ند (
تروق >queyC INSERT INTO Dogs(dog id, dog. name
اوم اجافس يو
dog breed) VALUES (Stog_s4, ‘Sdog_name’, 'Sdog_ weight,
وملو:
'$éog_breed’y))
2
throw new Exception( Dog Tableinset Exror * Smysqli-
صفحه 26:
داده های ۷7[
SOL
متد مخرب تلاش میکند تا به پایگاه داده متصل شود .
ا ل الا ا و ا ا 0
فيلدهاى مورد نياز ايجاد مى كند ( توجه: احتمالا روش بهتر تغيير نام جدول قبلى و ايجاد يك
1 م ا Ie ee)
; dog_coler , $dog_waight , $dog_name$ }!|, ,slis SQL INSERT j=.
از جدول وارد مى كند (alo
ل ا 00
را
یک برنامه تموئه در وب سایت کتاب تحت فصل ۶ موجود است .
نکته برنامه نویسی -
سرور 06 باید به درستی پیکر بندی شود و ب1]7860 باید به درستی نصب شود تا
مابه | اجرآ شود
فپ ۱۳
۳ ا اا ا ل Solo MmIVout-TudC
255
ن تموته پایگاه داده ( یک نموته
صفحه 27:
پشتیبان گیری و بازیابی
findion proces (Schange Type, $records_arzy)
{
switch(Schange Type)
{
\
شكلى بيش حالى ت بايد بيش از ذخيره case "Dele
وت از ند ؛ بهعلاوه اید رای رویاروبی Gis >eeleleRecorGreerds ary),
مال که م ie ۰ mre ene
case "Insat" ee
‘Sthis->insertR econds(Sreoords_arzy), 7
9
case "Update!
his >updat م كلسم سمه
1۳۳
Gas) سر “رق روط جه
دا د SthisreadReoonds(Srecords ary), (6-1 Je) degda
5 لی ایجاد خواه Brats Process
9 الق
بعديت throw new Exception Invalid XML fle change type Schange Typ
صفحه 28:
ال تمام درخواست ها براى اعمال قغبیر ات از ابن مت ارسال خر اهند شد .
این متد یک نوع تغییر [ ee ۱
array + » ESE a G9) Sec eme el 1c) ا ا ال ا ا STG
ار لنچ EOWeETN ED NS IB IB Peecep
اجازه مى دهد فراخوانى يك متد lees را بپذیرد) که یکی از الزامات یک زبان شی گراست ( در کنار قابلیت های کپسوله
سازی دا
ا ل ا سس«
اگر یک نوع نامعتبر ارسال شود » ل ار
امثیت و کارایی-
در یک محیط پویا و «زنده » » ارسال « کد » به اين نوع متدها به جای روش استفاده از مقداری که
خواهد بود .
ER Pe ل ا ا م ا one)
که کدها را بررسی کند تا متد موردنظر برای ف راخوانی را تعیین کند
با لا ۱
صفحه 29:
پشتیبان گیری و بازیابی
ال شد زیرا مورد نیاز متد 61666 بو
هو ناو )۱95۵ , آرای
عد 010665518866005 مر
01000
تس "| معط ۰۱
a:1.{1.0,a4 {s 8 "dog nane',s 7 "Spet!,s
موه 9۰و
صفحه 30:
ک رشته مرتب شده(86۳151126) را
) (8۱69_ ۱09 6۱96
.\dog_application
data
كه از متد ©0318 و نا
استفاده از متد ©056/7131126نا
07142015042510 | Inset| 8:1:41:0,3:4:45 تقصهول":8
"dog_weight",s 2" 19";s:9:* dog_color*;s'5"Green'
“dog_weight",s:2."19;s:9."dog_color*,s:5."Green*,s:9."dog_breed',s:3.
7142015042510 | Delete | 1
صفحه 31:
داده هاى موجود در يك رشته مرتب شده(56]131126) را مى توان با استفاذه آز متد 5611311260] لابه يك قالب آرايه ( يك قلب ديكر ) بركردائد
pee eeS ا الل ل ا ا ری( لك
RCS AES oyu ار
سپس رشته ساخته شده ۰ با استفاده از متد 2۳۳0۲109 به این قابل ثبت ارسال مشود . محتویات این قابل ثبت مشابه این خواهد بود .
اين قالب ٠ تمام اطلاعات مورد نياز براق كمك به فرايند بازيابى را فراهم مى كنذ ١ اكر نسخه كنونى قابل داذه 009 مخدوش شود .قابل ثبت تغييرلت را
و[
033 مورد نياز است . افزودن چند خط کد در مخرب است
صفحه 32:
مثال ۶-۲ و
private $dogs_aray =array0, //defined as an empty array initially
Dog_data.php
pawvate $dog_deta_2anl
prwvate Shrange ار وه
متمد construct {
ibxml use_mntemal_erers(true),
SmlDoc = new DOMDoaiment0,
if Gle_enists( e5dog_opplications xml") ){
‘SemlDoc>loadeSdog_applicaticas xml),
SsearchNode = SemIDoc>gaElementsByT agNimet type" );
frachSseachNode as SseachNode )(
SvaluelD =$searchNode-> getAlinbuteCD9,
iRSvalueD —" datastorage’) {
SnmlLocation = SsemchNode-
>gaElementsByT agNemet location’ ),
Sthis>dog_deta_xml = SmnlLocai
>nedeValue,
real,
dise { throw new Exception¢ Dog applications aml file missing or commupt*
‘Senile = Gle_get_contents(Silus->dog_data_san}),
Senlstrng= smplemml:load_sting(SanlSl0,
if coamisting— sis) {
SarerString = “Failed loading ت20
Sreadh(hbuml get_eresd a Sexe) {
SerorStnng = Senor>message .""; }
throw new Bxceplion(SarexStnng), }
$ys0n =}s00_eicode(anltning),
Sihis->dogs_aray =json_decnde(tjson, TRUE),
ند
صفحه 33:
fiction _ destruct {
Smmlstang="<?xml vasion="1.0' encoding="UTF-8"7>',
$umistnng ="\n<dogs>\n',
fbreach (Sthis->dogs_avay as Sdogs=>Sdogs
foreach (Sdogs Value as Sdog => So}
Sxenlstiing ="<$dogs>\n’
foreach Gdog. value as Scslumn => $column_value)
3 Sanlstinng.="<Scolumn>". $dog_valud$columa]
"</$columa>ta', 2
Smnistring =*</Sdogs>\n',
misting,
Snow yalld_data flle= preg replace 10-9147, ", Sthis>dog data_xml),
Ws xemove the previous date and time if Itexists
Soldxinldata = dateCmdYhis'). Snew valid_data_file,
if Qrmame(Sthis>dog_data_xrmi, Soldxmidata)) { throw new Exception(’ Backup file
Soldxmldata could notbe created. :ا" (
file_put_contents¢mew_valld_data_file,Semlstrg;
1
private function deleteRecord ($recordNumber)
{
صفحه 34:
unset (Sdogs_value{coumt($dogs_value) -1D,
/
Schange_string = date¢maYhis’). " | Delete |" . SrecordNumber
‘Schge_log_file= dateCmaYhis’) . Sthis>change log file,
exror_logchange_string3,$cige log file); //mightexceed 120 ch
مثال۶-۳
Dog_data.php
1
private function readRecords(SrecordNumber)
1
(اتلمص دهاز )
return Sthis.>dogs_ ray" dog"),
pelse{
۱ مص ةعلدمددة ]*يدة
}
‘Shas odogs_enay{*dog!|Sdogs_ ray size + $1] = Seecords_emay{ST,
Schange string =dateCmaYhis’). " | Insert |". serialle(Srecords_array)
date¢ ma Yhis'). Sthis> change og f
crror_logtSchange string3,Schge log file), /‘mnlghtexcced 120 chars
۱
(ردسريع قم |
تسعد ة دصر لمع - Sthis>dogs_aray('dog"Jifrecons)
صفحه 35:
مثال۶-۳
Dog_data.php
error_log(Schangr _string3,$chge log file); // might exceed 120 chars
}
function setChangeLogFile(®value)
1
Sthis>dog_data_xml= Svalug
1
function processRecords(Schange Type, Stecords_array)
1
switch Schange Type)
1
case "Delete
Sthis>deleteRecord Srecords_array),
break;
case “Insert”
‘Sthis>insertRecords(Srecords_array);
break;
case "Update":
Sthis>up dateRecords(Srecords_array),
break,
default:
throw new Exception("Invalld XML file change type:
Senne Tyre
صفحه 36:
صفحه 37:
1
۲
oiolsite U>dse eat £8 Moe tee Ones 9 Pde eae Ls
صفحه 38:
peer rics
\.Getbreeds.php
۱
م 01۲6610۳ با مقدار "۳ نا
Clea) eee
شده را نمایش میده
کناطنای برنمه را ودار خر 5 a eee 1
صفحه 39:
هیچ تغیری تا زمانی که تغیرات مربوط ب بخش اول این فصل پیاده سازی مشوند برنامه 5۳1۷۲۳۱۸۸۱۷6۶0 ماو تغیرات در کلاس
cle oaks alts cl og 42 1JSON (cla vals DOG_DATA ا ل
پشتیبانگیروو بازیابیداده هايا ۱/۷5
00 ا ا nes ee eee nen ena
Fee Se Coed ear Va Oe ort er Fear ye Dee Og Cr rou oon eo Oe Pen Peas pes ©)
طور که پیشتر نشان داده شد تنها یک دستور ]92لا ,را اجرا کنید
2 ا در د Rel em
شما ميتوانيد فايل اسكرييت نويسى.را بر اساس ركورد هابى در آرايه اتجمنى كه تغير نيافته اند ايجاد كنيد.شما ميتوانيد از فايل ثبث. ليستى از
ا ل ا ا ا ا ۱
.میتوان آن را برای رفع هر نوع مخدوش برگرداند
صفحه 40:
لمع تاد دزن شما میتوانید هر دستور موره نیاز 10۳10۸۳2 سای 5 را
private ا
Schge log fle =dateCmmdYhis’), his >change |
Schge_ sine
اقم Garetords siray as Sreconts—>Srecerds_value)
2
ای مت اس سس
اي 0
Stins change log
نی در 120 chars
private finction ی هبعک
dogs_arsy
صفحه 41:
aT vert
وت رو
rand.
5 ot ald
char(4)
vate fndtion insetRecedstrecods_arzy)
Sdige string =
dogs anay_sice = coun(Sthis>dogs_ ara
جا ملسمو مه كانم
‘his dogs aryl dog IStogs_enay size + SI)
S4og.id=rand(0.5999) ge amumberbewem 0 nd
hile Gn_aray(Sdog i, Stus->dogs_ any, tue) Minar
og id= rend 9999), if ised nother cmber
[ ده و Sehge string. = Sreonts_eraSTI
رمرم توس پوت وه
Saige log_fle =detetmdYhis) Shs >change lox fle,
cert logge string 3 Seige Jog, S19, Mmught exced 120 cars
| ۱0000سگ مجازاست
صفحه 42:
[fe esc rea oes eas er eee rear eee ACs A Cee Cea اک[
کلاس 209 ازکلاس 013]8_ 109 برای ذخیره سازی اطلاعات مربوط به سک ها در یک فایل 26]1.استفاده میکند
WS Car ety ا ا ا ا ا ل 7 1۳
ار ا لكا
econ CL-Lello oe W=) 0) o) Cet] alo] | Neoware ا استفاده میکند که چندین بار برای جستجوی نام فایل
کلاس 009_60۳۵106۲
مورد نیاز در فایل-] 26 مربوط به برنامه 000].مورد بحث قرار گرفت
متدمم3_غ56 به شما اجازه ميدهد نوع برنامه را براى جستجودر ۷
صفحه 43:
مثال ۶-۵ فایل ۱و0 که از ۱( ها۵2_و10 برای تخیر دسازی دلدهها استفاده میکند
«او۱>
class Dog
{
|
صفحه 44:
ir gnanod_exiss¢dog_container, تراهم >
ی[ Sprepetier asaya
Lever = Bhis-ad_dog_naneGprepatio: m0) —TRUE? TRUE,
ها کمن دی دج سس ردو RUE? TRUE FALSE,
تتسد arom Suis ssa Gop waanGprepation stays) —=TRUE? TRUE
۳ TRUE? TRUE.’
مص هج مده جع تمه ی میاه :یدصت موه همم سم ماو
function ctean_inputo OF
private function tave-dom dato,
1
0
a لش یت fontainer. php"): //1se chapter 5 container we
cnet
‘dtrow new Exeep ton" Dog container filemussing or corupe'>:
2
maar, Beers ner new dog_containerc*dogdata"> // sets the tagname ta look for in
Sproperties_array = armayC'dogdatay: // notused butimust bepasted into
سه
پرودووی من روج نم ؤحاف_عام مه جر درام مت - ماه كج" // creates dog date
وه
Sinethod_nrray = get_clarx_ethods(Sdog_datny:
aring> = لد Sine
Sinahoa. method array {sia posttiony:
Stecond_Atray = array(anayCdog naineo>"Sunis>dog fare”,
صفحه 45:
0
م wright’, “dog. color'a>" Sinte>dog color
sdog precio Sthio dog Bre)
2056 data smanod jamet Insert”, Srecord_Arrayy
Eekaae- sorts
1
راد جع وم مه تفص
عع سس
عج سم مه ونده ورمدسه وده بحيو بجع ewan sien)
2 مومدی سر جاجح
Serene نج
ی 1
مادم دوه سم هه Potion
i
Gop مادک وش ©. (value > OLS $value <= 1209)? sthus->dog_w
Sakis grernerige = FALSE.
تخد مج
Savor message = TRUE:
Gere raidier preedGvahie)) ——TRUED? stine->dog_ breed —Svale
ius-nerer mestege = FALSE,
fen Shu Serer mecae }
ای امعم
یاهدس موه Savor
Gopeaiphadvahie) S&S strlnnGvalue) <= 15)? Shis Sdog. color هیک
SHES tor messege = PALES
fourm ShisSerer messes,
1 5207
۳
عصم ومدح مه مس
موه سوه عی لصو
Eoction get_dou ovate
fom Shir doa و
Sanction ga_dos_breedo
(ies iia ret
0
Enction get_dog_colerO
9
feu Shis->dog_ cote:
صفحه 46:
fiction ge_propatiesO
:>dog_weight, this >dog breed, $this >dog_colee
| fle = smplemr 1 ام عم ناح ونج تجو
عت الود - Sbreed_fle>2s300L0,
AsiristroanlT ext, $value) ——FALSE)
TRUE, مسا
11
حل برنامه 1008 دارای سه ردیق کامل لت (عکل ۳.ع.
صفحه 47:
Sree nie Ree se eal ie ose ene)
این اطلاعات با حس 0 ٩ تجاری از مکان نام هرکلاس یا متد موجود در ردیف
000
داده بی خبر استاین اطلاعات نيز ao la امکان استقلال کامل هر ردیف را فراهم
بت
.میکند که اجازه میدهد تفیرات در یک ردیف به وقوع ببیوندند بدون نیاز به اعمال تغیرات در دو ردیف دیگر باشد
صفحه 48:
با تشکر از توجه شما
هميشه موفق باشید.
