CodeIgniter HMVC
EllisLab, British Columbia Institute of Technology, wiredesignz

CodeIgniter on Framework e. Raamistik mõeldud PHP-le. CodeIgniteri eripäradeks on lihtsus, kiirus ja ülimalt väike jalajälg. Antud õpetuses käsitleme CodeIgniteri paigaldamist ning temale laienduste: MX ( HMVC ) ja fSQL lisamist.

Installatsioon

Alustuseks laadige viimane versioon CodeIgnitersit (v3.0.1) ametlikult kodulehelt codeigniter.com ning asetage arhiivist kasutad: application ja system ning fail index.php teile sobivasse kausta teie serversi (antud näites kasutame selleks veebilehe web.zone.ee/hmvc juurkasuta)

Järgmiseks laadige viimane versioon wiredesignz CodeIgniteri HMVC laiendusest mille leiate https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/get/codeigniter-3.x.zip ning kopeerige kaustad: third_party ja core juba eelnevalt paigaldatud CodeIgniteri kausta application.

Avage kaustas application kaust core kus te peaksite nägema kahte faili: MY_Loader.php ja MY_Router.php; loome sinna uue faili ja nimetame ta MY_Controller.php avage äsjaloodud fail ning määrake tema sisuks järgmine kood:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

						# load the MX_Router class
						require APPPATH . "third_party/MX/Controller.php";

						class MY_Controller extends MX_Controller {
							
							function __construct()
							{
								parent::__construct();
							}
							
						}

Viimaks lisage käsitsi kasuta application kaust nimega modules. Sellega on installatsioon lõpetatud.

Seadistamine

Esmane seadistus kujutab endast config.php avamist kaustas application/config/config.php. Real 20 leiate seadistuse base_url. Muudame antud seadistuse vastavalt olukorrale. Meie näite puhul on seadistus märgitud kommentaarina // meie seadistused.

$config['base_url'] = ''; // $config['base_url'] = 'https://webzone.ee/hmvc/';

Oleme endiselt samas failis ning suundume järgmise seadistuseni milleks on index_page väärtusega index.php. Kui te ei taha, et teie URL algaks igavesti index.php/minu/tavaar siis seame too tühjuseks.

Teadmiseks! Limiteeritud serverites näiteks web.zone.ee-s ei lubata .htaccess kasutamist mille tõttu on võimatu skippida index.php'd aadressi realt, vaadake [ siin ]. [ Koos index.php ]-ga toimib kõik ilusti.
$config['index_page'] = 'index.php'; // $config['index_page'] = '';

Seadistame session parameetrid. Selleks on meil vaja luua uus kaust, antud näites loome juurkasuta uue kausta nimega sessions ning suundume config.php failis reale 361 ning muudame seadistust järgnevalt:

$config['sess_driver'] = 'files';
						$config['sess_cookie_name'] = 'ci_session';
						$config['sess_expiration'] = 7200;
						$config['sess_save_path'] = NULL; // $config['sess_save_path'] = FCPATH . 'sessions';
						$config['sess_match_ip'] = FALSE; // $config['sess_match_ip'] = TRUE;
						$config['sess_time_to_update'] = 300;
						$config['sess_regenerate_destroy'] = FALSE;
Hoiatus! Kui asute limiteeritud veebiruumis nagu on web.zone.ee siis peate tegema järgnevad muudatused: failis system/core/CodeIgniter.php ja failis index.php kommenteerige välja kõik read tervikuna mis käsitlevad funktsiooni ini_set();

Pärast üldise süsteemi seadistust loome uue faili põhi index.php kõrvale (meie näite puhul juurkausta) ning nimetame selle .htaccess failiks mille sisuks seame:

RewriteEngine on
						RewriteBase /

						# If your default controller is something other than
						# 'home' you should probably change this
						RewriteRule ^(home(/index)?|index(\.php)?)/?$ / [L,R=301]
						RewriteRule ^(.*)/index/?$ $1 [L,R=301]

						# Removes trailing slashes (pervents SEO duplicate content issues)
						RewriteCond %{REQUEST_FILENAME} !-d
						RewriteRule ^(.+)/$ $1 [L,R=301]

						# Enforce NO www ( JUHUL KUI EI SOOVI WWW PREFIXI ) ------
						RewriteCond %{HTTP_HOST} ^www [NC]
						# ---------- TEIE VEEBILEHE AADRESS ILMA WWW-TA ---------- 
						RewriteRule ^(.*)$ https://webzone.ee/hmvc/$1 [L,R=301]
						# --------------------------------------------------------

						# Checks to see if user is attempting to access a valid file,
						# such as image or css document, if this isn't true it sends the# request to index.php
						RewriteCond %{REQUEST_FILENAME} !-f
						RewriteCond %{REQUEST_FILENAME} !-d
						RewriteRule ^(.*)$ /index.php/$1 [L]

MX Liides (HMVC)

HMVC liides on meil juba eelnevalt paigaldatud, siinkohal testime tema töövõimekust. Suundume meiepoolt loodud kausta modules ning loome sinna kausta test mille sisse loome omakorda kolm kausta: controllers, models, views.

Alustame kontrollerist. Suundume äsja loodud kasuta controllers ning loome sinna faili Test.php paneme tähele, et failinimi on suure algustähega! Faili sisse kirjutame järgmise koodi:

<?php
						defined('BASEPATH') OR exit('No direct script access allowed');
						
						# Paneme tähele: klassi nimed on suurte algustähtedega!
						class Test extends MY_Controller {

							function index()
							{
								$this->load->view('view_test');
							}
						}
						?>

Järgmiseks loome view faili. Suundume äsja loodud kausta views ning loome uue faili nimega view_test.php mille sisse kirjutame ükskõik mida, näiteks:

CI HMVC Testimiseks!

Selles näites me models kausta ei käsitle vaid suundume otse /application/views/welcome_message.php kustutame tema sisu ning asendame selle koodiga:

<?php
						defined('BASEPATH') OR exit('No direct script access allowed');

						# Käivitame HMVC
						# Tähelepanu: Kõik pathid ja nimed Modules::run käsud peavad olema lowercase!
						echo Modules::run('test');
						?>

Minnes kodulehe indexile ja nähes vastust "CI HMVC Testimiseks!" oleme veendunud, et CodeIgniter HMVC on täiesti töökorras.

fSQL CodeIgniter Library

Juhul mil sooviksite kasutada andmebaasivõimalust kus teda tegelikkuses ette nähtud ei ole: Tõstsin fSQL 1.3.1 CodeIgniteri stiilile üle. Laadige fSQL CodeIgniter jaoks siit. Asetage arhiivis olev kaust Fsql kausta application/libraries/ ning looge kausta application/core uus fail nimega MY_Model.php seejärel seage tema sisu järgnevaks:

<?php
						defined('BASEPATH') OR exit('No direct script access allowed');

						class MY_Model extends CI_Model {

							function __construct()
							{
								# Load parent functions
								parent::__construct();
								
								# Loome ühenduse fSQL liidesega.
								$this->load->library('fsql');
								$this->fsql->define_db('db001', FCPATH . 'db/db001');
								$this->fsql->select_db('db001');
							}
							
						}
						?>

Viimaks loome kaks kausta, kuhu meie andmeid hakatakse salvestama: index.php kõrvale (meie näite puhul juurkausta) loome kasuta db ning kausta db sisse loome andmebaasi kausta db001.

Kokkuvõtteks

Kokkuvõttes peaks teil olema samaväärne resultaat mis antud lehekülg mida hetkel loete. Juhul kui seda ei ole saate laadida ka terve meie lehe korraga ühes zip (724 kb) failis meie lehe seadistustega.
fSQL liidest saate hetke seadistustega kasutada igas mudelis kuna core kasutas olev MY_Model deklareerib fsql objekti.

$result = $this->fsql->query("SHOW TABLES");

Kui teie jaoks on tähtis ka iga byte teie kõvaketta mälust kuid te ei taha loobuda ci-hmvc-fsql funktsionaalsusest siis tegime antud projektist ka minified versiooni kus on kõik .php ja .html failid ilma kommentaarideta ja reavahetusteta. Alla-laadimiseks vajutage siia (385 kb).

Kontakt

Võtke ühendust e-posti teel info@joonaskolostov.ee
kirjutage facebooki kasutajale Joonas Kolostov


2023-05-23 22:53:30