e5964a2a3523ec4bd31290b799090239.ppt
- Количество слайдов: 44
Вэб програмчлал Лекц Н. Ган-Эрдэнэ PHP – ОOP
Агуулга n n include, require функц ашиглах Обьект Хандалтат Технологи q q q Классын байгуулагч функц Классын гишүүдэд хандах Классын гишүүдийн хандалтын төвшин Классын удамшил Жишээ Багш: Н. Ган-Эрдэнэ 2
include, require функцууд n PHP файлын агуулгыг боловсруулагдахаас нь өмнө өөр хуудсанд оруулж ирж болдог. Оруулахдаа доорх хоёр функцын аль нэгийг нь ашигладаг. q q n include() require() include, require функцыг ашиглан их ажил хэмнэж болно. Багш: Н. Ган-Эрдэнэ 3
include жишээ n menu. php <a href="/default. php">Нүүр хуудас</a> <a href="/intro. php">Танилцуулга</a> <a href="/activity. php">Үйл ажиллагаа</a> <a href="/contact. php">Холбоо барих</a> <a href="/search. php">Хайлт</a> Багш: Н. Ган-Эрдэнэ 4
include жишээ n index. php n <html> <body> <div class="leftmenu"> <? php include("menu. php"); ? > </div> <h 1>Welcome to my home page. </h 1> <p>Some text. </p> </body> </html> Багш: Н. Ган-Эрдэнэ 5
include жишээ n index. php броузерт ачаалагдах байдал <html> <body> <div class="leftmenu"> <a href="/default. php">Нүүр хуудас</a> <a href="/intro. php">Танилцуулга</a> <a href="/activity. php">Үйл ажиллагаа</a> <a href="/contact. php">Холбоо барих</a> <a href="/search. php">Хайлт</a> </div> <h 1>Welcome to my home page!</h 1> <p>Some text. </p> </body> </html> Багш: Н. Ган-Эрдэнэ 6
include функц n include функц нь дуудах файлыг нээж доторх бүх агуулгыг нь хуулж өөрийн байгаа файлруу оруулдаг. menu. php <a href="/default. php">Нүүр хуудас</a> <a href="/intro. php">Танилцуулга</a> <a href="/activity. php">Үйл ажиллагаа</a> <a href="/contact. php">Холбоо барих</a> <a href="/search. php">Хайлт</a> index. php <html> <body> <div class="leftmenu"> <? php include("menu. php"); ? > </div> <h 1>Welcome to my home page. </h 1> <p>Some text. </p> </body> </html> <body> <div class="leftmenu"> <a href="/default. php">Нүүр хуудас</a> <a href="/intro. php">Танилцуулга</a> <a href="/activity. php">Үйл ажиллагаа</a> <a href="/contact. php">Холбоо барих</a> <a href="/search. php">Хайлт</a> </div> <h 1>Welcome to my home page!</h 1> <p>Some text. </p> </body> </html> Багш: Н. Ган-Эрдэнэ 7
require функц n require функцын үйл ажиллагаа нь include функцынхтай яг адилхан. <html> <body> <div class="leftmenu"> <? php require("menu. php"); ? > </div> <h 1>Welcome to my home page. </h 1> <p>Some text. </p> </body> </html> Багш: Н. Ган-Эрдэнэ 8
include, require функцын ялгаа q index. php <? php include("no. File. Exists. Here. php"); echo "Hello World!"; ? > Warning: main(no. File. Exists. Here. php): failed to open stream: No such file or directory in /home/website. Name/Folder. Name/index. php on line 2 Warning: main(): Failed opening 'no. File. Exists. Here. php' for inclusion (include_path='. : /usr/lib/php: /usr/local/lib/php') in /home/website. Name/Folder. Name/index. php on line 2 Hello World! q Хэрэв include функц алдаа илрүүлбэл анхааруулгын мэдээлэл өгч, скриптийн үйл ажиллагааг үргэлжлүүлдэг. Багш: Н. Ган-Эрдэнэ 9
include, require функцын ялгаа q index. php <? php require("no. File. Exists. Here. php"); echo "Hello World!"; ? > Warning: main(no. File. Exists. Here. php): failed to open stream: No such file or directory in /home/website. Name/Folder. Name/index. php on line 2 Fatal error: main(): Failed opening required 'no. File. Exists. Here. php' (include_path='. : /usr/lib/php: /usr/local/lib/php') in /home/website. Name/Folder. Name/index. php on line 2 q Хэрэв require функц алдаа илрүүлбэл Fatal error алдааны мэдээлэл үзүүлж, скриптийн үйл ажиллагааг зогсоодог. Багш: Н. Ган-Эрдэнэ 10
include, require функцын ялгаа n include, require функцын алийг нь ашиглах нь дээр вэ? Багш: Н. Ган-Эрдэнэ 11
require_once(), include_once() n n n Эдгээр функцүүд нь доторх агуулгаа яг нэг удаа л скриптэд нэмэгдсэн байх боломж өгдөг. Жишээ нь хэрэв include(), require() ашиглан функцүүдийн тодорхойлолтыг скриптэд нэмсэн бол ижил функцүүдийг дахин зарлан (дахин тодорхойлолт үүсгэн) алдаа гаргаж болзошгүй байдаг. require_once(), include_once() ашигласнаар зарлагдсан функцүүд нь зөвхөн нэг удаа л скриптэд нэмэгдэх боломж өгнө. Багш: Н. Ган-Эрдэнэ 12
Обьект Хандалтат Технологи n PHP дээр обьект хандалтат байдлаар вэбийг хийх боломжтой болсон. n PHP 5 хувилбараас эхлээд обьект хандалтат технологийг PHP-д бүрэн хэрэгжүүлэх боломжтой болсон. n Ихэнх вэбүүд нь хялбар жижиг байдаг учраас уламжлалт процедур хандалтат байдлаар бичихэд бэрхшээл үүсдэггүй. n Хэрэв систем нарийн төвөгтэй, хэмжээгээр том болоод ирвэл обьект хандалтат технологийг хэрэглэснээр системийг илүү бага кодоор илүү найдвартай бүтээх боломжтой болдог. Багш: Н. Ган-Эрдэнэ 13
Обьект Хандалтат Технологи n PHP дээр класс зарлахдаа: q class myclass { var $var 1; var $var 2; … function func 1() { } function func 2() { } … } Багш: Н. Ган-Эрдэнэ 14
Классын байгуулагч функц n Байгуулагч функцийг __construct() гэж бичиж өгдөг (хоёр ширхэг доогуур зураас ашиглана!) : q n class myclass { var $var 1; var $var 2; … function __construct() { } function func 1() { } … } PHP 5 –с өмнөх хувилбаруудад байгуулагч функцийн нэр классын нэртэй ижил байдаг байсан. Багш: Н. Ган-Эрдэнэ 15
Классын байгуулагч функц n Обьектийг анх зарлангуут байгуулагч функц нь автоматаар дуудагддаг. n Хэрэв __construct() гэсэн байгуулагч олдохгүй бол классын нэртэй ижил нэртэй функцийг байгуулагч болгон ашигладаг. n Энэ нь PHP 5 дээрээс ч өмнөх хувилбарын скриптүүдийг ажиллуулах боломжийг олгодог. n PHP 5 нь функцийн дахин тодорхойлолтыг дэмждэг болсон тул класс дотор параметраараа өөр ижил нэртэй олон байгуулагч функцүүд байх боломжтой болсон. Багш: Н. Ган-Эрдэнэ 16
Классын устгагч функц n Обьектыг устгахад устгахын яг өмнө нь устгагч функц нь автоматаар дуудагддаг. n Устгагч функцийг __destruct() гэж бичиж өгдөг. q class myclass { var $var 1; var $var 2; … function __construct() { } function __destruct() { } … } Багш: Н. Ган-Эрдэнэ 17
Классын обьектийг үүсгэх n Доорх код нь классын гурван обьект үүсгэж байна: n Скриптийн үр дүн нь: Багш: Н. Ган-Эрдэнэ 18
Классын $this заагч n n Классын гишүүдэд хандахдаа -> тэмдэглэгээг хэрэглэнэ. (Java-д цэгийг хэрэглэдэг. ) Классын доторх $id гэсэн хувьсагчид классын дотроос хандахдаа $this->id гэж хандана. Java-тай ижлээр класс дотор this гэсэн тусгай заагч байдаг. $this нь энэ обьект гэсэн утгатай. q class myclass { var $name; function __construct($n) { $this->name = $n; echo $this->name; } } Багш: Н. Ган-Эрдэнэ 19
Классын гишүүдэд хандах n n Классын хувьсагчдад утга олгох функцүүдийг __set($varname, $value), тэдгээрээс утга авах функцүүдийг __get($varname) гэж хийж өгдөг. Мөн хоёр ширхэг доогуур зураас ашиглана. __get(), __set() функцэд классын гишүүн хувьсагчийн нэрийг дамжуулдаг. Багш: Н. Ган-Эрдэнэ 20
Классын гишүүдэд хандах n __set(), __get() функцүүдийг програмист кодноосоо нэрээр нь дууддагүй. Харин харгалзах хувьсагчид шууд утга оноох, эсвэл утгыг нь авахад эдгээр функцүүд нь автоматаар дуудагддаг. Энэ тохиолдолд програм дотрооc : $a = new classname(); $a->$attribute = 5; Гэж ашиглахад __set() функцийг $name = ‘attribute’, $value = ‘ 5’ гэж дуудна. Багш: Н. Ган-Эрдэнэ 21
Классын гишүүдэд хандах n Хэрэв $attribute хувьсагчид 0 – 100 хүртэлх л утга орох ёстой бол үүнийг __set() функц дээр нь тавьж өгснөөр програмын бусад бүх хэсгээс зөвхөн 0 -100 утга л оруулах боломжтой болдог: n Java-с ялгаатай нь классын хувьсагч бүрт get, set функц тусд нь хийж өгөх шаардлагагүй болж байна. Багш: Н. Ган-Эрдэнэ 22
Классын гишүүдийн хандалтын төвшин n n n Java-тай адилаар PHP-н класс доторх хувьсагч болон функцүүд нь public, private, protected байна. Хувьсагч болон функцийн зарлалтын өмнө бичиж өгнө. Дараах онцлогтой: q q q Хэрэв хувьсагчийн хандалтын тодорхойлогчийг тавьж өгөхгүй бол PUBLIC хувьсагч болно. PRIVATE хувьсагч нь классын дотроос л хандагдана. Хэрэв классын хувьсагчид хандах хандалтыг __get(), __set() дотор хийж өгөөгүй бол уг хувьсагчдыг PRIVATE болгох нь тохиромжтой. PRIVATE хувьсагч болон функц нь удамшихгүй. PROTECTED хувьсагч болон функц нь удамшдаг PRIVATE гишүүн гэж ойлгож болно. Багш: Н. Ган-Эрдэнэ 23
Классын гишүүдийн хандалтын төвшин n Жишээ: n var тодорхойлогч байхгүй болсон байгааг анзаарна уу. Багш: Н. Ган-Эрдэнэ 24
Классын удамшил n Удамшлыг extends түлхүүр ашиглан хэрэгжүүлнэ: Багш: Н. Ган-Эрдэнэ 25
Классын гишүүдийн хандалтын төвшин n private, protected түлхүүр үгийг ашиглан юу удамших, юу нь удамшихгүйг тодорхойлж өгнө: Буруу! Багш: Н. Ган-Эрдэнэ 26
Классын функцийг дахин тодорхойлох n n PHP-д удамшиж ирсэн функцийг дахин тодорхойлж болдог. Харин нэг класс дотор хоёр ижил нэртэй функц байхыг зөвшөөрдөггүй. Жишээ: Багш: Н. Ган-Эрдэнэ 27
Классын функцийг дахин тодорхойлох n n PHP-д удамшиж ирсэн функцийг дахин тодорхойлж болдог. Харин нэг класс дотор хоёр ижил нэртэй функц байхыг зөвшөөрдөггүй. Жишээ: Багш: Н. Ган-Эрдэнэ 28
Классын функцийг дахин тодорхойлох n n Хэрэв удамшсан класс дотроос эх классын дахин тодорхойлогдсон функцийг дуудах шаардлага гарвал parent түлхүүр үгийг хэрэглэнэ (java дээр super гэж хэрэглэдэг) Жишээ: Хэрэв B класс дотроос A классын operation() функцийг дуудъя гэвэл: Багш: Н. Ган-Эрдэнэ 29
Классын функцийг дахин тодорхойлох n Классын удамшил болон функцийн дахин тодорхойлолтыг final түлхүүр үг ашиглан хориглож болно. n Өмнөх жишээнд хэрэв A классын operation функцийг доорх байдлаар зарласан бол B класст дахин тодорхойлох үед алдаа гарна: n Гарах алдаа нь: Багш: Н. Ган-Эрдэнэ 30
final түлхүүр үг n Мөн А классыг доорх байдлаар зарлавал түүнээс классууд удамшиж чадахгүй болно (java дээр мөн адилхан байдаг) : q final class A { …. } Багш: Н. Ган-Эрдэнэ 31
Интерфэйс хэрэглэх n n PHP-д нийлмэл удамшил байдаггүй. Харин нийлмэл удамшлыг Java-тай адилаар интерфэйс ашиглан хэрэгжүүлдэг. PHP-д интерфэйс зарлах ашиглах жишээ: q q interface A { function display(); function connect(); } class B implements A { function display() { …. } } Багш: Н. Ган-Эрдэнэ 32
Жишээ n Вэб сайт нь вэб хуудаснуудаас тогтдог. Тэгвэл хуудас хийхэд хэрэглэгдэх Page класс тодорхойлж үзье. n Энэ классын ашиглан сайтад шинээр хуудас оруулахад бага код бичин илүү хурдан хийх болно. n Page класс дотор хуудсууд хооронд ялгаатай байж болох мэдээллүүдийг хувьсагч болгон оруулж эдгээр хувьсагчдад утга олгох болон хэвлэх функцүүдийг нь тавьж өгнө. Багш: Н. Ган-Эрдэнэ 33
Жишээ Багш: Н. Ган-Эрдэнэ 34
Жишээ Багш: Н. Ган-Эрдэнэ 35
Жишээ Багш: Н. Ган-Эрдэнэ 36
Жишээ Багш: Н. Ган-Эрдэнэ 37
Жишээ Багш: Н. Ган-Эрдэнэ 38
Жишээ Багш: Н. Ган-Эрдэнэ 39
Жишээ Багш: Н. Ган-Эрдэнэ 40
Жишээ Page классыг ашиглан өөр хуудас үүсгэхийн тулд page. inc файл дотор уг классаа хийгээд үүсгэх гэж байгаа шинэ хуудастаа энэ файлыг require хийн оруулна. Багш: Н. Ган-Эрдэнэ 41
Жишээ Хэрэв зарим хуудасны бүтэц нь стандарт хуудасныхаас ондоо байвал Page классаас удамшсан шинэ класс үүсгээд шинэ үйлдлийг нь хийж өгч болно. Багш: Н. Ган-Эрдэнэ 42
Жишээ Багш: Н. Ган-Эрдэнэ 43
Үр дүн Багш: Н. Ган-Эрдэнэ 44
e5964a2a3523ec4bd31290b799090239.ppt