КампутарыПраграмаванне

PHP construct: стварэнне асобнікаў класаў

Ідэя аб'ектна-арыентаванага праграмавання значна шырэй магчымасцяў PHP у сілу яго спецыфікі, але нават у існуючай рэалізацыі яна дае праграмісту неабмежаваныя магчымасці. Канструкцыя PHP construct - асаблівы метад класа (аб'екта), які выклікаецца кожны раз, калі ствараецца асобнік класа.

Абмежаванне ў тым, што PHP працуе ў момант фарміравання старонкі. У момант, калі старонка абнаўляецца або загружаецца іншая старонка таго ж сайта, патрэбная сістэма аб'ектаў фарміруецца зноў з нуля.

Стварэнне асобніка класа

Апісанне класа не абавязана мець канструктар. Калі трэба падрыхтаваць пачатковыя значэнні зменных, адлавіць момант стварэння асобніка класа (аб'екта), правесці пэўныя дзеянні над іншымі аб'ектамі, то можна не выкарыстоўваць сінтаксіс PHP class construct і пісаць адпаведны код па-за метадаў класа.

Па логіцы аб'ектна-арыентаванага стылю праграмавання кожны клас павінен мець канструктар, больш за тое варта пачынаць дрэва класаў з самага абстрактнага (абсалютна пустога) продка. Гэта перажытак мінулага, а не разумная практыка.

Калі радавод пачынаецца значным класам, які мае ўласныя дадзеныя і ўласцівасці, звязаныя з вонкавымі дадзенымі (аб'ектамі), без function construct PHP не абысціся.

У дадзеным прыкладзе пры стварэнні (PHP construct) асобніка класа даты будзе выклікана дадзеная функцыя (канструктар). Яна мае спецыфічнае імя __construct і выклікаецца аўтаматам толькі адзін раз, калі ствараецца асобнік класа.

У гэтым класе прадугледжана статычная зменная $ iUniqueNo, якая ў кожным новым экзэмпляры такога класа будзе мець унікальнае значэнне. Асобнікі класаў не маюць паміж сабой нічога агульнага акрамя апісання ў рамках сінтаксісу PHP і прадугледжанага распрацоўшчыкам ўзаемадзеяння іх метадаў.

Ўспадкоўванне логікі ініцыялізацыі

Кожны аб'ект павінен рэалізоўваць сваё прызначэнне, мець тое, што яму належыць, і рабіць тое, што павінен. З такой разумнай пункту гледжання ініцыялізацыя на кожным узроўні радаводу можа ўключаць у сябе ініцыялізацыю ў кожным продкі, выкліканага з узроўню нашчадка.

У гэтым прыкладзе ключавое слова parent :: дазваляе выклікаць канструктар продка з узроўню нашчадка. Семантыка простая. Спачатку павінен выканаць сваю ініцыялізацыю продак, затым бягучы асобнік. Першы варта сваёй лёгіцы, другі - сваёй.

Калі кожны аб'ект займаецца сваёй справай, агульны працэс выглядае правільна і зразумела. Але не варта гэтае правіла лічыць нормай для ўсіх сістэм аб'ектаў.

Радавод сістэмы аб'ектаў "прадукты харчавання" у самым першым набліжэнні можа мець нешта агульнае, але прадукты малако, кавун, макароны і крупы хоць і ставяцца да такой сістэмы, але выглядаюць і апісваюцца зусім па розным.

Распрацоўшчык павінен будаваць кожную сістэму аб'ектаў ад вобласці прымянення, а не ад таго, як гэта было калісьці кімсьці прапанавана. Кожная задача ўнікальная, патрабаванне выкарыстоўваць менавіта на PHP parent construct - ня абсалютна.

Агульныя і прыватныя канструктары

Па змаўчанні канструктар з'яўляецца агульным і даступны для выкарыстання ўсімі нашчадкамі. Не абавязкова паказваць public function construct, PHP па змаўчанні разглядае ўсё апісанае, як агульнае.

Наколькі мае сэнс выкарыстоўваць ключавое слова private пры апісанні канструктараў - спецыфіка задачы, асаблівасць працэсу распрацоўкі або пераваг праграміста?

З канцэптуальнай пункту гледжання радавод аб'ектаў можа дапускаць якія-небудзь забароны продкаў па адносінах да нашчадкаў, але наколькі гэта разумная логіка сказаць цяжка, ва ўсякім выпадку, у агульным кантэксце.

Час жыцця аб'екта

Канцэпцыя аб'ектна-арыентаванага праграмавання шырэй магчымасцяў PHP construct class па той простай прычыне, што апошнія існуюць толькі ў момант фарміравання старонкі, яе паўторнага стварэння або стварэння іншай старонкі сайта.

Удзел AJAX праз JavaScript браўзэра і належны код на сэрвэры дапаможа падоўжыць жыццё аб'ектаў, але ў любым варыянце гэта будзе абмежаваны стыль.

PHP дае магчымасць выконваць скрыпт на сэрвэры, калі кліент "адключыўся", і "дапускаць" кліента назад у скрыпт, запушчаны ім раней, але гэта зусім не той варыянт, калі аб'ектна-арыентаваная праграма рэалізаваная на мове З ++.

У апошнім выпадку можна пабудаваць паўнавартасную сістэму аб'ектаў, якая будзе існаваць "вечна", пакуль праграма запушчана і працуе. Зрэшты, гэта адзінае чым можа пахваліцца стацыянарны мова праграмавання накшталт З ++, З #, Pascal & Delphi. У дынамічным інтэрнэт-свеце ўсё будуецца інакш, жыве хутчэй і дасягае большага.

Ад серыялізацыі да самазахавання

Можна знайсці гістарычнае абгрунтаванне тэрміну "серыялізацыя" і з'яўленню ва ўжытку паняцця "магічныя метады". Але ўсё значна прасцей. Роўна тым жа, чым адрозніваецца свабода З ++ ад калянасці З #, серыялізацыя адрозніваецца ад банальных паняццяў:

  • запісаць аб'ект у радок;
  • прачытаць аб'ект з радка.

Акружыць сказанае магіяй і міфічнымі магічнымі метадамі - прыгожа, гучна, але мала практычна. Свет інфармацыі цікавы перш за ўсё тым, што ўсе бачнае, чутнае і якое адчуваецца можна апісаць простым і паслядоўным тэкстам.

Інфармацыя заўсёды была, ёсць і будзе радком знакаў. Не важна, які прыроды. У фармальных канструкцыях моў праграмавання прырода сімвалаў адна - табліца кадоўкі.

Ідэя ператварыць аб'ект у радок так, каб пры патрэбе можна было яго аднавіць з гэтага радка без страты сутнасці - вельмі практычная ідэя.

Ад самазахавання да самаразвіцця

Семантыка канструктара PHP construct ў межах яго сінтаксісу абмежаваная, але калі канструктар распрацоўваць з якая развіваецца пазіцыі:

  • ёсць пачатак - ствараецца абсалютна новы асобнік;
  • ёсць бягучы стан - ствараецца ўжо існуючы асобнік.

Абмежаванні PHP з прычыны таго, што сістэма аб'ектаў на ім існуе толькі ў момант фарміравання старонкі, здымуцца самі сабой.

Ствараючы сістэму аб'ектаў пры фарміраванні старонкі сайта, яе можна захаваць. Для прастаты гэты працэс не абавязкова называць Серыялізацыя, можна абмежавацца захаваннем бягучага становішча рэчаў (базы дадзеных, файлаў), а калі спатрэбіцца зноў сфармаваць гэтую ж старонку або стварыць іншую на гэтым жа сайце, проста аднавіць тое бягучае становішча рэчаў, якое ўжо сфармавалася.

У такім кантэксце сістэма аб'ектаў ствараецца толькі аднойчы, а ў працэсе працы сайта яна проста развіваецца. Пры такой схеме можна праектаваць сістэму аб'ектаў як нешта адаптуюцца да зменлівых умоў існавання.

Самосохраняемая сістэма аб'ектаў "запамінае" дзеянні наведвальніка і стан старонак, і кожны раз, калі запускаецца PHP, яна не ствараецца з нуля, а аднаўляецца у папярэднім стане.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 be.birmiss.com. Theme powered by WordPress.