Ebben a cikksorozatban a CodeIgniter php keretrendszert fogjuk végigvenni az alapműködéstől kezdve, a könyvtárakon át, egészen addig, hogy a végére képes leszel bármilyen webes alkalmazást írni  CodeIgniter használatával.

A CodeIgniter bemutatása

A keretrendszer elkészítésekor kitűzött cél az volt, hogy létrehozzanak egy olyan eszközt, amivel lényegesen gyorsabb egy PHP oldalt elkészíteni, mint a nyers PHP-val, mindezt úgy, hogy a programozó szinte észre se vegye, hogy egy keretrendszerben dolgozik, mégis számos szolgáltatás álljon a rendelkezésére. A CodeIgniter egy egyszerű, hatékony, gyors és mégis kezelhető és könnyen használható keretrendszer, ami közel áll a szimpla PHP nyelvhez, viszont birtokolja a keretrendszerek nyújtotta előnyöket is.

 

Telepítés

 

A CodeIgniter telepítése nagyon egyszerű nem igényel semmilyen speciális tudást.

  1. Töltsük le a CodeIgnitert.
  2. Csomagoljuk ki a zip fájlt.
  3. Töltsük fel a szerverre vagy tárhelyre.

Ezután már csak a config fájlokat kell beállítani és kész is, lehet használni a keretrendszert.

Az első config fájl amit be kell állítani az az application/config/config.php ez tartalmazza a keretrendszer alapbeállításait.

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

//egyénileg tudjuk állítania weboldal url-jét legtöbbször elég üresen hagyni
$config['base_url'] = '';


$config['index_page'] = 'index.php';


$config['uri_protocol']	= 'REQUEST_URI';


$config['url_suffix'] = '';

//alapértelmezett nyelvet lehet beállítani
$config['language']	= 'english';

//karakterkódolás beállítása
$config['charset'] = 'UTF-8';

//hook engedélyezése
$config['enable_hooks'] = FALSE;

//ha szeretnénk saját libraryket készíteni akkor itt lehet megadni a fájl illetve az osztálynév prefixét
$config['subclass_prefix'] = 'MY_';

//composer autoload be/kikapcsolása
$config['composer_autoload'] = FALSE;

//megadhatjuk reguláris kifejezésekkel, hogy milyen karakterek szerepelhessenek az url-ben
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';


$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
$config['directory_trigger'] = 'd';

//a $_GET szuperglobális tömb engedélyezése
$config['allow_get_array'] = TRUE;

//a logolás szintjét lehet beállítani
// 0 = logolás kikapcsolása
// 1 = hibaüzenetek (php errorokat is beleveszi)
// 2 = hibakeresési információk
// 3 = Information üzenetek
// 4 = Mindent logol
//Megjegyezném, hogy a 3 és 4-es szint beállítása nem ajánlott mert ilyenkor tényleg mindent logol és hamar több tíz megás logfájlok jöhetnek létre
$config['log_threshold'] = 0;

//logfájlok helyét lehet megadni
$config['log_path'] = '';

//logfájlok kiterjesztésének beállítása (pl: .php, .txt, .log)
$config['log_file_extension'] = '';

//log fájlok jogosultság beállítás
$config['log_file_permissions'] = 0644;

//dátum formátum (év,hónap,nap óra,perc,másodperc)
$config['log_date_format'] = 'Y-m-d H:i:s';

//errorok helyének beállítása
$config['error_views_path'] = '';

//cache helyének beállítása
$config['cache_path'] = '';


$config['cache_query_string'] = FALSE;
//titkosítási kulcs
$config['encryption_key'] = '';

//session és cookie beállítások
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

$config['cookie_prefix']	= '';
$config['cookie_domain']	= '';
$config['cookie_path']		= '/';
$config['cookie_secure']	= FALSE;
$config['cookie_httponly'] 	= FALSE;


$config['standardize_newlines'] = FALSE;

//globális xss szűrés
$config['global_xss_filtering'] = FALSE;


$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();

//gzip tömörítés bekapcsolása 
$config['compress_output'] = FALSE;


$config['time_reference'] = 'local';

//php rövidített tag-ek
$config['rewrite_short_tags'] = FALSE;


$config['proxy_ips'] = ''

A másik config fájl amit mindenképp szerkeszteni kell az az adatbázis beállításait tartalmazó application/config/database.php fájl.

$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost', //adatbázis kiszolgáló
	'username' => 'username', //adatbázis felhasználónév
	'password' => 'password', //adatbázis jelszó
	'database' => 'database', //adatbázis neve 
	'dbdriver' => 'mysqli', //adatbázis motor
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8', //adatbázis karakterkódolás
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

Ha mindent sikerült beállítani akkor készen áll arra, hogy dolgozhassunk a keretrendszerrel.

Könyvtárstruktúra

  • application
    • cache: oldalak gyorsító-tárazására szolgál, ha engedélyezett
    • config: konfigurációs állományok
    • controllers: vezérlők
    • core: a keretrendszer alaposztályainak módosítására szolgáló osztályok
    • errors: hiba template (pl: 404) oldalak
    • helpers: alkalmazás szintű függvények, kiegészítések, ún. segítők, például: Email helper, Data helper, File helper…
    • hooks: hook fájlok, melyekkel a CodeIgniter core beállításait kiterjeszthetjük, beavatkozhatunk a feldolgozási folyamatba.
    • language: nyelvi fájlok
    • libraries: segéd könyvtárak
    • logs: naplóállományok
    • models: modellek
    • third_party: harmadik féltől származó bővítmények
    • views: nézet állományok
  • system: keretrendszer
    • core: a keretrendszer magja
    • database: adatbázis vezérlők
    • fonts: betűtípusok
    • helpers: beépített segítő függvények, minden alkalmazás számára elérhetőek
    • language: külső nyelvi fájlok
    • libraries: beépített class fájlok, minden alkalmazás számára elérhetőek

 

Mik azok a funkciók amiért érdemes használni a CodeIgnitert és megkönnyíti az életed?

  • Model-View-Controller Based System
  • Extremely Light Weight
  • Full Featured database classes with support for several platforms.
  • Query Builder Database Support
  • Form and Data Validation
  • Security and XSS Filtering
  • Session Management
  • Email Sending Class. Supports Attachments, HTML/Text email, multiple protocols (sendmail, SMTP, and Mail) and more.
  • Image Manipulation Library (cropping, resizing, rotating, etc.). Supports GD, ImageMagick, and NetPBM
  • File Uploading Class
  • FTP Class
  • Localization
  • Pagination
  • Data Encryption
  • Benchmarking
  • Full Page Caching
  • Error Logging
  • Application Profiling
  • Calendaring Class
  • User Agent Class
  • Zip Encoding Class
  • Template Engine Class
  • Trackback Class
  • XML-RPC Library
  • Unit Testing Class
  • Search-engine Friendly URLs
  • Flexible URI Routing
  • Support for Hooks and Class Extensions
  • Large library of “helper” functions

Működés:

  1. Az index.php fut le először, amely inicializálja a CodeIgniter futtatásához szükséges alapforrásokat.
  2. A router megvizsgálja a HTTP kérést annak megállapítására, hogy mit kell tenni vele.
  3. Ha gyorsítótár fájl létezik, akkor közvetlenül a böngészőbe kerül, és megkerülve a normál rendszerfuttatást.
  4. Biztonság. Az alkalmazásvezérlő betöltése előtt a HTTP-kérelem és a felhasználók által elküldött adatok biztonsági szűrésre kerülnek.
  5. A Vezérlő betölti a modellt, a központi könyvtárakat, a segítőket és az összes szükséges erőforrást, amelyek az adott kérés feldolgozásához szükségesek.
  6. A végleges nézet megjelenik, majd elküldi a böngészőbe. Ha a gyorsítótárazás engedélyezve van, a nézetet először gyorsítótárba helyezi, így a későbbiekben a kérések gyorsabban renderelés nélkül betölthetőek.

A CodeIgniter a Model-View-Controller fejlesztési mintán alapul. Az MVC olyan szoftveres megközelítés, amely elválasztja az alkalmazási logikát a megjelenítéstől. A gyakorlatban lehetővé teszi, hogy webhelye minimális szkriptet tartalmazzon, mivel a bemutatás elkülönül a PHP szkriptjeitől.

  • modell az Ön adatszerkezeteit mutatja be. Jellemzően a modellosztályai olyan funkciókat tartalmaznak, amelyek segítenek az adatbázisban lévő információk letöltésében, beillesztésében és frissítésében.
  • nézet az a információ, amelyet a felhasználónak nyújtanak be. A nézet általában egy weboldal, de a CodeIgniterben a nézet egy oldaltöredék lehet, akár egy fejléc vagy egy lábléc. Ez lehet egy RSS oldal, vagy bármely más típusú “oldal”.
  • vezérlő szolgál közvetítőként a Model és a View között, itt történik a libek, helperek, modellek, view-k összerakása, betöltése.

A CodeIgniter nem követeli meg az MVC szemléletet így ha nem szeretnéd az adatbázis lekérdezéseidet és egyéb műveleteket külön modelbe rakni akkor nyugodtan teheted a controllerbe.

 

Megvannak az alapok, a következő részben írunk egy egyszerű példaalkalmazást amiben egyértelműen láthatóvá válik hogy miért érdemes keretrendszert használni.

A szerzőről

Fodor Balázs

Webfejlesztő. Minden érdekel ami IT, ezenkívül videókat készítek és vágok, speciális effekteket készítek, képeket szerkesztek, és nagyon érdekel az IT Security.

Kapcsolódó bejegyzések

Válaszolj

Az e-mail címed nem publikáljuk.