Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

MVC tarzı bir program geliştirmek...

merhaba arkadaşlar codeigniter'gibi bi sistem yapacaktım 2-3 haftadır bilgi birikimi yaptım ve dün gece kolları sıvadım control class'ını yazdım kendime özgü template engine'mi yazdım view kodlarının mantığınıda oturtturdum ama index de tıkandım mvc ile yapılmış sistemleri inceledim ama bişi bulamadım yani control klasörünün altına hosgeldin.php diye bi dosya olştrdum ve bnda control classını extends ettim ama bunu sitenin index.php dosyasında nasıl cekeceğim yani
$a = new hosgeldin;
seklinde ceksem hosgeldin_view.tpl deki birlinke tıklayınca bunuda çkmem lazım yani bunları otomatk çeken bişey yazmam lazım __autoload fonksiyonu yapayım dedim ama buseferde kndim hpsini çağrmak zorndamı kalacağım yani bi diziye olstrduğum controller'i aktarıp ordan dosyasını çağrmak falan mntıklı değl 2 dün snra baska bir control dosyası oluşturunca tkrar düzenlemem gerekir işin içinden çıkamadım codeigniter'daki index.php de controller i cağırma mantığı nedir?
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • 1
    xuma adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    171 cevap - 1 soru
    http://sevenkevins.com/ burayı incelemeni tavsiye ederim.Daha basit daha anlaşılırdır.http://codeigniter.com/user_guide/overview/appflow.html burdan göreceğin gibi rooter ile codeigniter neyin yükleneceğine karar verir ve yükler.Sana çok çok basit bir örnek vermek amacıyla mvc işleri popüler olmadan önce spagetti tarzı yazdığım bir yapıyı paylaşayım.Bütün istekleri htaccess ile index.php'ye yönlendirirsin.
    ob_start();
    	@session_start();
    	define('ANA', realpath(dirname(__FILE__)));
    	define('DS', DIRECTORY_SEPARATOR);
    	define('APP', ANA . DS . 'app' . DS);
    	define('GNL', ANA . DS . 'app' . DS.'genel'.DS);
    	define('CLS', ANA . DS . 'class' . DS);
    	define('INC',ANA.DS.'inc'.DS);
    	include INC."inc.ayarlar.php";
    	$db= new PDO("mysql:host=".VTSUNUCU.";dbname=".VTISIM."",VTKULLANICI,VTPAROLA);
    	$db->exec("SET NAMES 'utf8'");
    	$db->exec("SET CHARACTER SET utf8");
    	$db->exec("SET COLLATION_CONNECTION = 'utf8_general_ci'");
    	include INC."inc.fonksiyon.php";
    	include INC."inc.uri.php";
    	include INC."inc.kontrol.php";
    	if(url(1)=="cikis"){session_destroy();header("location:".URL);}
    	if($giris!=TRUE || $uye!=TRUE){
    		include "app/giris/index.php";
    	}else{
    		if(url(2)=="q"):
    			include "app/q.php";
    		else:
    			include INC."inc.yol.php";
    		endif;
    	}
    		
    	
    	ob_end_flush();
    

    önemli olan yol kısmıdır ;
    <?
    	$yollar=array("hata","","site","cikis","sayfa","katilimci","bilesen");
    	if(in_array(url(1), $yollar)){
    		url(1)=='' ? $yol = 'genel' : $yol =url(1);
    		$dosya = APP . $yol . DS .'default.php';
    		$control=APP . $yol . DS .$yol.'_control.php';
    		if(is_readable($dosya) == false){
    				$dosya = APP . 'hata' . DS . 'hata.php';
    				$control=APP . 'hata' . DS .'hata_control.php';
    				$yol = 'hata';
    				$is = 'hata';
    		}
    		$js="";
    		$css="";
    		$title="";
    		include $control;
    		include GNL."header.php";
    		include $dosya;
    		include GNL."footer.php";
    	}else{
    		header("location:".URL."hata/aradiginiz-sayfa-bulunamadi");
    	}
    
    

    Url parçalarını şu şekilde alırdım ;
    function url( $index = NULL ){
        	static $segments;
        	 if ( NULL === $segments ) {
    	        $segments = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
    	        $segments = explode( '/', $segments );
    	        $segments = array_filter( $segments );
    	        $segments = array_values( $segments );
        	}
    	    if ( NULL === $index ){
    	        return '/' . implode( '/', $segments );
    	    }
    	    $index =  ( int ) $index - 1;
    	    return isset( $segments[$index] ) ? $segments[$index] : NULL;
    	}
    

    Tabi burda template yapısını kullanma gibi bir amacım yokmuş :) Bu şuanki frameworklerin en temel mantığıdır.Url segmentlerini alır ve onlara göre işlemler yaparlar.
    • sharq adlı üyenin fotoğrafı sharq
      teşekkr ederim inceliyeceğim bnm kafamı karıştıran nokta mesela bi admin paneli yapıyorum makale yöneticisi kullanıcılar falna bnlar iöin controlelr'e dosya olştryorum olşturduğum classlar mesela

      class makaleekle extends controller {}

      burdaki makaleekle class'ını anasafada

      $makale = new makaleekle;
      böle çağrmak mantıklı gelmedi codeigniter'i inclediğimde get_instance(); gibi bi fonksiyon kullnmış ama pek anlayamadım galiba birazdaha bilgi birikimi yapmam lazım cevabınız için teşekkr ederim dediğim gibi inceleyip takldığım yeri yazacağım teşekkr ederim.
      9 yıl önce yazılmış