<?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();
?> fonksiyon içinde include sorunu
18
●1.782
- 28-07-2009, 21:16:19Üyeliği durdurulduşöyle birşey yaptım işini görür inş.
- 28-07-2009, 21:33:39Üyeliği durduruldubulamadı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:59Teş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:04dezavantaj 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, 14:38:17$dnm = new dnm();saho adlı üyeden alıntı: mesajı görüntüle
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Ü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Üyeliği durdurulduyahu 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:35Böyle olunca bütün classları include etmiş gibi oluyoruz sankim. tek seferde zincirleme olarak hepsini çağırmış oluyoruz galiba.LoverzSoft adlı üyeden alıntı: mesajı görüntüle
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.saho adlı üyeden alıntı: mesajı görüntüle
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

