⊗ppMVDFmCn 28 of 35 menu

კონტროლერები თქვენს MVC ფრეიმვორკში PHP-ში

როგორც უკვე იცით, ჩვენი ფრეიმვორკის ყველა კონტროლერს აქვს მეთოდი render, რომელიც საჭიროა გამოიძახოთ მონაცემების ჩვენებაში გასაგზავნად. ეს მეთოდი ჩვენი, მომხმარებლური კონტროლერები იღებენ მემკვიდრეობით მშობელ კლას Controller-ისგან, რომელიც მდებარეობს ბირთვში. მოდით გავაკეთოთ ეს კლასი:

<?php namespace Core; class Controller { protected function render($view, $data) { } } ?>

როგორც ხედავთ, მეთოდი render პარამეტრად იღებს ჩვენების სახელს და მონაცემებს ჩვენებისთვის. მოდით, ეს მეთოდი დააბრუნებს სპეციალური კლასის Page ობიექტს, რომელშიც იქნება ინფორმაცია კონტროლერის მოქმედების მონაცემების ჩვენების შესახებ. ამ კლასში იქნება ჩვენების სახელი, მონაცემები, ასევე გვერდის სათაური და საიტის ლეაუტის ფაილის სახელი:

<?php namespace Core; class Page { private $layout; private $title; private $view; private $data; public function __construct($layout, $title, $view, $data) { $this->layout = $layout; $this->title = $title; $this->view = $view; $this->data = $data; } public function __get($property) { return $this->$property; } } ?>

მაშინ ჩვენი მეთოდის render კოდი ასე გამოიყურება:

<?php namespace Core; class Controller { protected $layout = 'default'; protected function render($view, $data) { return new Page($this->layout, $this->title, $view, $data); } } ?>

აგიხსნით, რა ხდება აქ. ჩვენების სახელი და მონაცემები მოდის მეთოდის პარამეტრებით. თუმცა, მომხმარებლურ კონტროლერში დაყენებულია აგრეთვე გვერდის სათაური - title თვისების მინიჭებით. ეს ნიშნავს, რომ $this->title-ში იქნება ის სათაური, რომელსაც ჩვენ გადავცემთ Page კლასის კონსტრუქტორს.

ლეაუტთან დაკავშირებითაც არის ნიუანსები. როგორც იცით, ჩვენი ფრეიმვორკი იყენებს ლეაუტს ფაილიდან default.php. სინამდვილეში, თითოეულ მოქმედებას შეიძლება ჰქონდეს სხვა ლეაუტიც. ამისთვის საჭიროა თავად მოქმედებაში layout თვისებაში ჩაიწეროს ლეაუტის სხვა სახელი.

როგორ მიიღწევა ეს: ჩვენ მშობელ კონტროლერს აქვს თვისება layout, რომელსაც ნაგულისხმევად აქვს მნიშვნელობა 'default.php'. ეს იქნება ნაგულისხმევი ლეაუტი. თუმცა, თუ მომხმარებლური კონტროლერის მოქმედება გადააწერს layout თვისების მნიშვნელობას, მაშინ ლეაუტიც სხვა იქნება.

დააკოპირეთ ჩემი კლასის Controller კოდი და მოათავსეთ იგი ფაილში /core/Controller.php.

დააკოპირეთ ჩემი კლასის Page კოდი და მოათავსეთ იგი ფაილში /core/Page.php.

ქართული
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語Қазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა