• 28-07-2009, 21:16:19
    #10
    Üyeliği durduruldu
    şöyle birşey yaptım işini görür inş.
    <?php
    	function c_yukle($class_adi, $klasor = 'kut/') 
    	{
    		$yol = $klasor.$class_adi.'.class.php';
    		if(file_exists($yol))
    		{
    			require_once ($yol);
    			$class = new $class_adi;
    			return $class;
    		}
    		else
    		{
    			echo $class_adi.'.class.php dosyası yüklenemedi!<br />';
    			exit();
    		}
    	}
    	
    	$x = c_yukle('a');
    	echo $x->fonksiyonum();
    ?>
  • 28-07-2009, 21:33:39
    #11
    Üyeliği durduruldu
    bulamadım ama şöyle birşey yazdım şimdi
    <?php
    	class loader{
    		var $name;
    	public	function yukleyici($name){
    			$this->name = $name;
    			return $this;
    		}
    				public function yukle(){
    				require($this->name.".php");
    				return new $this->name;
    				}
    	}
    ?>
    kullanım
    $baslat = new loader;
    $database = $baslat->yukleyici("database")->yukle();
    $database->query("select * from uyeler");
  • 28-07-2009, 22:44:59
    #12
    Teşekkürler arkadaşlar ,
    Bunlar da singleton gibi çalışıyor (gerçi onun amacı farklı ama )
    yapmak istediğimi hala tam yapabilmiş değilim.
    örnek vermem gerekirse belki daha açıklayıcı olabilir.
    $yukle = new yukle();
    $siniflar = array('db','guvenlik','kelime','links');
    $yukle->sinif($sinfilar);
    
    $db->query("select....");
    
    $guvenlik->post_temizle($post);
    
    $kelime->parcala($metin);
    
    $links->yonlendir($url);
    yani herhangi bir eşitleme yapmadan array('db','guvenlik','kelime','links'); burdaki değerlerle aynı isimli classları direk kullanmaya çalışıyorum,
    diğer örnekler hep tekli kullanım.
    yani şöyle oluyor
    $yukle = new yukle();
    
    $db = yukle->sinif('db');
    $db->query("select...");
    
    $guvenlik = $yukle->sinif('guvenlik');
    $guvenlik->post_temizle($post);
    
    $kelime = $yukle->sinif('kelime');
    $kelime->parcala($metin);
    
    $links = $yukle->sinif('links');
    $links->yonlendir($url);
    global ile çözülüyor gibi problem ama,
    çok fazla global kullanmanın nasıl bir dezavantajı olur acaba ?
  • 29-07-2009, 13:00:04
    #13
    dezavantaj olarak ram de tuttuğu yer ve yanlışlıkla aynı isimde başka bir yerde bir değişken kullanarak karışıklığa yol açması sayılabilir.
  • 29-07-2009, 13:11:03
    #14
    Üyeliği durduruldu
    include 'func.php'
    load ('dnm');
    $dnm->yaz();

    buradaki eksiğin

    $dnm = new dnm();

    eklemelisin yani

    include 'func.php'
    load ('dnm');
    $dnm = new dnm();
    $dnm->yaz();

    tabi onun yerine
    $dnm->yaz(); yerine dnm::yaz(); da diyebilirsin
  • 29-07-2009, 14:38:17
    #15
    saho adlı üyeden alıntı: mesajı görüntüle
    include 'func.php'
    load ('dnm');
    $dnm->yaz();
    buradaki eksiğin
    $dnm = new dnm();
    $dnm = new dnm();
    kısmı zaten include edilen class ın sonunda başlatılıyor ama
    global dışında başka bir çözüm yolu bulamadım.
    şöyle bişey oluyor aşağı yukarı,
    func.php :
    function yukle($isim)
    { global $$isim;
      include $isim.'.php';
     }
    dnm.php:

    class dnm
    {
     function yaz()
    {
    echo 'yaz';
    }
    }
    $dnm = new dnm();
    index.php
    include 'func.php';
    yukle ('dnm');
    $dnm->yaz();
    istediğimi yapıyor. ama amaca göre yeterince kullanışlı değil, ekstra yük getiriyor gibi , sınıf sayısı arttıkça.
  • 29-07-2009, 15:13:26
    #16
    Üyeliği durduruldu
    <?php
    
    class database {
    
    		public function yaz(){
    		return "selam<br>";
    		}
    
    	}
    	
    	
    	class session extends database{
    	
    	public function ***(){
    	return "hehe oldu heralde";
    	}
    	
    	}
    	
    	
    	class yeni extends session{
    	
    	
    	}
    	
    	
    
    
    $q = new yeni;
    
    echo $q->***();
    
    ?>
    extends kullansan daha iyi olmazmı senin açından ?
  • 29-07-2009, 16:10:46
    #17
    Üyeliği durduruldu
    yahu class zaten gayet simple bi$i , onu bile üşengeçlikten daha da azaltmaya çabalıyoruz
    function class_cek($class,$value="") {
            if(file_exists('obje/'.$class.'/class.'.$class.'.php'))
            {
                require_once'obje/'.$class.'/class.'.$class.'.php';
                if(empty($class))
                {
                    ${$class}=new $class($value);
                }
                return ${$class};
            }
            elseif(file_exists('class.'.$class.'.php'))
            {
                require_once'class.'.$class.'.php';
                if(empty(${$class}))
                {
    
                    ${$class}=new $class($value);
                }
                return $$class;
            }
            else
            {
                return false;
            }
        }
    {
    ben böyle birşey yapmıştım oldukça fazla oldu eksik yönleri olabilir

    $degisken = new class_cek('saho');
    gibi kullanılabilitesi var
  • 29-07-2009, 20:37:35
    #18
    LoverzSoft adlı üyeden alıntı: mesajı görüntüle
    extends kullansan daha iyi olmazmı senin açından ?
    Böyle olunca bütün classları include etmiş gibi oluyoruz sankim. tek seferde zincirleme olarak hepsini çağırmış oluyoruz galiba.

    saho adlı üyeden alıntı: mesajı görüntüle
    yahu class zaten gayet simple bi$i , onu bile üşengeçlikten daha da azaltmaya çabalıyoruz
    ben böyle birşey yapmıştım oldukça fazla oldu eksik yönleri olabilir
    $degisken = new class_cek('saho');
    gibi kullanılabilitesi var
    dediğiniz doğru zaten basit bişey ama ne bileyim böyle bir yapı yaparsam sanki daha kolay vge düzenli olacak herşey.
    tam oturtamadım rayına.

    aslında yalan söylemeyeyim CI 'da görmüştüm bunu.
    ordan özendim
    $this->load->library(array('dnm','db','metin')); veya $this->load->model(array('dnm','db','metin')); çağırılışı var
    ardından da
    $this->dnm->yaz();
    $this->db->query();
    gibi kullanabiliyoruz.

    böylece kullanılmayan gerekli olmayan hiç bir class include edilmemiş oluyor her sayfada gerekli olanlarla çalışıyoruz.
    yapmak istediğim ordaki gibi ama çıkamadım işin içinden