CodeIgniter - Temel Kavramlar

Kontrolörler

Bir denetleyici, basit bir sınıf dosyasıdır. Adından da anlaşılacağı gibi, tüm uygulamayı URI ile kontrol eder.

Bir Denetleyici Oluşturma

İlk önce gidin application/controllersKlasör. Orada iki dosya bulacaksınız.index.html ve Welcome.php. Bu dosyalar CodeIgniter ile birlikte gelir.

Bu dosyaları oldukları gibi saklayın. Aynı yol altında yeni bir dosya oluşturun "Test.php”. Bu dosyaya aşağıdaki kodu yazın -

<?php 
   class Test extends CI_Controller {
  
      public function index() { 
         echo "Hello World!"; 
      } 
   } 
?>

Test sınıf, adı verilen yerleşik bir sınıfı genişletir CI_Controller. Kendi Controller sınıfınızı oluşturmak istediğinizde bu sınıf genişletilmelidir.

Bir Denetleyiciyi Çağırma

Yukarıdaki kontrolör aşağıdaki gibi URI tarafından çağrılabilir -

http://www.your-domain.com/index.php/test

"test"İndex.php'den sonraki URI'de. Bu, denetleyicinin sınıf adını gösterir. Denetleyicinin adını verdiğimiz gibi "Test", yazıyoruz "test"İndex.php'den sonra. Sınıf adı ile başlamalıdıruppercase letter ama yazmamız gerek lowercase letterBu denetleyiciyi URI ile çağırdığımızda. Denetleyiciyi çağırmak için genel sözdizimi aşağıdaki gibidir -

http://www.your-domain.com/index.php/controller/method-name

Oluşturucu Yöntemi Oluşturma ve Çağırma

Yukarıdaki sınıfı değiştirip "merhaba" adında başka bir yöntem oluşturalım.

<?php 
   class Test extends CI_Controller {  
	
      public function index() { 
         echo "This is default function."; 
      } 
  
      public function hello() { 
         echo "This is hello function."; 
      } 
   } 
?>

Yukarıdaki denetleyiciyi aşağıdaki üç şekilde çalıştırabiliriz -

  • http://www.your-domain.com/index.php/test
  • http://www.your-domain.com/index.php/test/index
  • http://www.your-domain.com/index.php/test/hello

Tarayıcıda ilk URI'yi ziyaret ettikten sonra aşağıdaki resimde gösterildiği gibi çıktıyı alıyoruz. Gördüğünüz gibi, yöntemin çıktısını aldık "index”, Yöntemin adını URI'den geçirmemiş olsak da. URI'de sadece kontrolör adını kullandık. Bu gibi durumlarda, CodeIgniter varsayılan yöntemi "index”.

Tarayıcıda ikinci URI'yi ziyaret ettiğimizde, yukarıdaki resimde gösterilenle aynı çıktıyı elde ederiz. Burada, URI'deki controller isminden sonra metodun ismini geçtik. Yöntemin adı "index”, Aynı çıktıyı alıyoruz.

Tarayıcıda üçüncü URI'yi ziyaret ederek, çıktıyı aşağıda verilen resimde gösterildiği gibi elde ederiz. Gördüğünüz gibi, yöntemin çıktısını alıyoruz "hello"Çünkü geçtik"hello"Yöntem adı olarak, denetleyicinin adından sonra"testURI'de ".

Hatırlanacak noktalar

  • Denetleyici sınıfının adı büyük harfle başlamalıdır.

  • Denetleyici küçük harfle çağrılmalıdır.

  • Üst sınıfın işlevselliğini geçersiz kılacağından, ana sınıfınızla aynı yöntemin adını kullanmayın.

Görüntüleme

Bu, denetleyici tarafından çağrılabilen basit veya karmaşık bir web sayfası olabilir. Web sayfası üstbilgi, altbilgi, kenar çubuğu vb. İçerebilir. Görünüm doğrudan çağrılamaz. Basit bir görünüm oluşturalım. Altında yeni bir dosya oluşturapplication/views "adıylatest.php”Ve aşağıdaki kodu o dosyaya kopyalayın.

<!DOCTYPE html> 
<html lang = "en"> 

   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Kodunu değiştirin application/controllers/test.php dosya aşağıda gösterildiği gibi.

Görünümü Yükleme

Görünüm aşağıdaki sözdizimi ile yüklenebilir -

$this->load->view('name');

Burada adı, işlenmekte olan görünüm dosyasıdır. Görünüm dosyasını bir dizinde saklamayı planladıysanız, aşağıdaki sözdizimini kullanabilirsiniz -

$this->load->view('directory-name/name');

.Php dışında bir şey kullanılmadıkça, uzantıyı php olarak belirtmek gerekli değildir.

İndex () yöntemi, view yöntemini çağırıyor ve "test" i argüman olarak view () yöntemine geçiriyor çünkü html kodlamasını "test.php"Altındaki dosya application/views/test.php.

<?php 
   class Test extends CI_Controller { 
	
      public function index() { 
         $this->load->view('test'); 
      } 
   } 
?>

İşte yukarıdaki kodun çıktısı -

Aşağıdaki akış şeması, her şeyin nasıl çalıştığını göstermektedir -

Modeller

Model sınıfları, veritabanındaki bilgilerle çalışmak üzere tasarlanmıştır. Örnek olarak, uygulamanızdaki kullanıcıları yönetmek için CodeIgniter kullanıyorsanız, kullanıcılarınızın verilerini eklemek, silmek, güncellemek ve almak için işlevler içeren model sınıfına sahip olmanız gerekir.

Model Sınıfı Oluşturma

Model sınıfları şurada saklanır: application/modelsdizin. Aşağıdaki kod, CodeIgniter'da model sınıfının nasıl oluşturulacağını gösterir.

<?php 
   Class Model_name extends CI_Model { 
	
      Public function __construct() { 
         parent::__construct(); 
      } 
   } 
?>

Model_name vermek istediğiniz model sınıfının adıdır. Her model sınıfı, CodeIgniter'in CI_Model sınıfını miras almalıdır. Model sınıfının ilk harfi büyük harfle yazılmalıdır. Kullanıcıların model sınıfı için kod aşağıdadır.

<?php 
   Class User_model extends CI_Model {
	
      Public function __construct() { 
         parent::__construct(); 
      } 
		
   } 
?>

Yukarıdaki model sınıfı User_model.php olarak kaydedilmelidir. Sınıf adı ve dosya adı aynı olmalıdır.

Yükleme Modeli

Model denetleyicide çağrılabilir. Herhangi bir modeli yüklemek için aşağıdaki kod kullanılabilir.

$this->load->model('model_name');

Model_name, yüklenecek modelin adıdır. Modeli yükledikten sonra, aşağıda gösterildiği gibi basitçe yöntemini çağırabilirsiniz.

$this->model_name->method();

Otomatik Yüklenen Modeller

Uygulamanız boyunca bazı model sınıfları olmasını istediğiniz durumlar olabilir. Bu tür durumlarda, onu otomatik olarak yüklememiz daha iyidir.

/*
| ---------------------------------------------------------------
|  Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
|   $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|  
|   $autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array();

Yukarıdaki şekilde gösterildiği gibi, otomatik olarak yüklemek istediğiniz dizideki modelin adını iletin ve sistem başlatma durumundayken ve uygulama boyunca erişilebilir durumdayken otomatik olarak yüklenecektir.

Yardımcıları

Adından da anlaşılacağı gibi, sisteminizi kurmanıza yardımcı olacaktır. Farklı işlevlere hizmet etmek için küçük işlevlere bölünmüştür. CodeIgniter'da aşağıdaki tabloda listelenen bir dizi yardımcı bulunmaktadır. Kendi yardımcılarımızı da oluşturabiliriz.

Yardımcıları tipik olarak sizin system/helpersveya application/helpers directory. Özel yardımcılar şurada saklanır:application/helpers dizin ve sistem yardımcıları şurada saklanır: system/helpersdizin. CodeIgniter ilk olarakapplication/helpers directory. Dizin yoksa veya belirtilen yardımcı bulunmazsa, CodeIgniter bunun yerine globalsystem/helpers/ directory. İster özel ister sistem yardımcısı olsun, her yardımcı kullanmadan önce yüklenmelidir.

SN Yardımcı Adı ve Açıklaması
1

Array Helper

Dizi Yardımcısı dosyası, dizilerle çalışmaya yardımcı olan işlevler içerir.

2

CAPTCHA Helper

CAPTCHA Helper dosyası, CAPTCHA görüntüleri oluşturmaya yardımcı olan işlevler içerir.

3

Cookie Helper

Çerez Yardımcısı dosyası, çerezlerle çalışmaya yardımcı olan işlevler içerir.

4

Date Helper

Tarih Yardımcısı dosyası, tarihlerle çalışmanıza yardımcı olan işlevleri içerir.

5

Directory Helper

Dizin Yardımcısı dosyası, dizinlerle çalışmaya yardımcı olan işlevleri içerir.

6

Download Helper

İndirme Yardımcısı, verileri masaüstünüze indirmenize izin verir.

7

Email Helper

E-posta Yardımcısı, E-posta ile çalışmak için bazı yardımcı işlevler sağlar. Daha sağlam bir e-posta çözümü için CodeIgniter'in E-posta Sınıfına bakın.

8

File Helper

Dosya Yardımcısı dosyası, dosyalarla çalışmaya yardımcı olan işlevler içerir.

9

Form Helper

Form Yardımcısı dosyası, formlarla çalışmaya yardımcı olan işlevler içerir.

10

HTML Helper

HTML Yardımcısı dosyası, HTML ile çalışmaya yardımcı olan işlevler içerir.

11

Inflector Helper

Inflector Helper dosyası, kelimeleri çoğul, tekil, deve durumu vb. Olarak değiştirmenize izin veren işlevler içerir.

12

Language Helper

Dil Yardımcısı dosyası, dil dosyalarıyla çalışmaya yardımcı olan işlevler içerir.

13

Number Helper

Sayı Yardımcısı dosyası, sayısal verilerle çalışmanıza yardımcı olan işlevler içerir.

14

Path Helper

Yol Yardımcısı dosyası, sunucudaki dosya yollarıyla çalışmanıza izin veren işlevleri içerir.

15

Security Helper

Güvenlik Yardımcısı dosyası, güvenlikle ilgili işlevleri içerir.

16

Smiley Helper

Smiley Helper dosyası, gülen yüzleri (ifadeleri) yönetmenize izin veren işlevler içerir.

17

String Helper

Dize Yardımcısı dosyası, dizelerle çalışmaya yardımcı olan işlevleri içerir.

18

Text Helper

Metin Yardımcısı dosyası, metinle çalışmaya yardımcı olan işlevler içerir.

19

Typography Helper

Tipografi Yardımcısı dosyası, metninizi anlamsal olarak uygun şekillerde biçimlendirmenize yardımcı olan işlevler içerir.

20

URL Helper

URL Yardımcısı dosyası, URL'lerle çalışmaya yardımcı olan işlevler içerir.

21

XML Helper

XML Helper dosyası, XML verileriyle çalışmaya yardımcı olan işlevleri içerir.

Yardımcı Yükleme

Aşağıda gösterildiği gibi bir yardımcı yüklenebilir -

$this->load->helper('name');

Ad, yardımcının adıdır. Örneğin, URL Yardımcısı'nı yüklemek istiyorsanız, şu şekilde yüklenebilir -

$this->load->helper('url');

Yönlendirme

CodeIgniter, URL'yi kolayca yeniden yönlendirebilmeniz için kullanıcı dostu URI yönlendirme sistemine sahiptir. Tipik olarak, bir URL dizesi ile ona karşılık gelen denetleyici sınıfı / yöntemi arasında bire bir ilişki vardır. Bir URI'deki segmentler normalde bu modeli izler -

your-domain.com/class/method/id/
  • first segment çağrılması gereken denetleyici sınıfını temsil eder.

  • second segment çağrılması gereken sınıf işlevini veya yöntemi temsil eder.

  • thirdve herhangi bir ek segment, kimliği ve denetleyiciye iletilecek tüm değişkenleri temsil eder.

Bazı durumlarda, bu varsayılan yönlendirme mekanizmasını değiştirmek isteyebilirsiniz. CodeIgniter, kendi yönlendirme kurallarınızı belirleyebileceğiniz kolaylık sağlar.

Yönlendirme Kurallarını Özelleştirin

Tüm bunları halledebileceğiniz belirli bir dosya var. Dosya application / config / route.php adresinde bulunur. Yönlendirme kurallarınızı özelleştirebileceğiniz $ route adlı bir dizi bulacaksınız. $ Route dizisindeki anahtar neyin yönlendirileceğine ve değer nereye yönlendirileceğine karar verir. CodeIgniter'da üç ayrılmış yol vardır.

SN Ayrılmış Rotalar ve Açıklama
1

$route['default_controller']

Bu rota, eğer URI veri içermiyorsa hangi denetleyici sınıfının yüklenmesi gerektiğini belirtir; bu, insanlar kök URL'nizi yüklediğinde böyle olacaktır. Varsayılan bir rotanız olması teşvik edilir, aksi takdirde varsayılan olarak bir 404 sayfası görünür. Burada web sitesinin ana sayfasını ayarlayabiliriz, böylece varsayılan olarak yüklenecektir.

2

$route['404_override']

Bu yol, istenen denetleyici bulunamazsa hangi denetleyici sınıfının yüklenmesi gerektiğini belirtir. Varsayılan 404 hata sayfasını geçersiz kılar. Etkilemezshow_404() işlevi, varsayılanı yüklemeye devam edecek error_404.php dosyasında application/views/errors/error_404.php.

3

$route['translate_uri_dashes']

Boolean değerinden de anlaşılacağı gibi, bu tam olarak bir rota değildir. Bu seçenek, denetleyicideki ve yöntem URI segmentlerindeki kısa çizgileri ('-') alt çizgilerle otomatik olarak değiştirmenize olanak tanır, böylece bunu yapmanız gerekirse size ek yol girişlerinden tasarruf sağlar. Bu gereklidir çünkü tire geçerli bir sınıf veya yöntem adı karakteri değildir ve kullanmaya çalışırsanız ölümcül bir hataya neden olur.

Rotalar özelleştirilebilir wildcards veya kullanarak regular expressions ancak bu özelleştirilmiş yönlendirme kurallarının ayrılmış kurallardan sonra gelmesi gerektiğini unutmayın.

Joker karakterler

Aşağıda açıklandığı gibi iki joker karakter kullanabiliriz -

  • (:num) - Yalnızca sayı içeren bir segmentle eşleşecektir.

  • (:any) - Herhangi bir karakter içeren bir segmentle eşleşecektir.

Example

$route['product/:num']='catalog/product_lookup';

Yukarıdaki örnekte, URL'nin ilk segmentinde "ürün" kelimesi ve ikinci segmentte bir sayı bulunursa, bunun yerine "katalog" sınıfı ve "ürün_bak" yöntemi kullanılır.

Düzenli ifadeler

Joker karakterler gibi, normal ifadeleri de kullanabiliriz $route array keyBölüm. Herhangi bir URI normal ifadeyle eşleşirse, o zaman $ route dizisine ayarlanan değer kısmına yönlendirilir.

Example

$route['products/([a-z]+)/(\d+)']='$1/id_$2';

Yukarıdaki örnekte, ürünler / ayakkabılar / 123'e benzer bir URI bunun yerine "shoes"Denetleyici sınıfı ve"id_123" yöntem.