• 29-04-2013, 16:47:56
    #1
    Arkadaşlar merhaba, ben bir class oluşturdum ve bu class'ın içinde ismini verdiğim sayfayı include eden bir fonksiyon var. Bu foksiyon ile bir sayfayı include ettiğimde bu sayfanın içinde class'ın fonksiyonlarını kullanamıyorum.

    Class.php
    class website{
    ....
    
        // istenilen dosyayı çağırma page=... değerine göre
    	public function pageCaller($pageName){
    		if(file_exists("pages/$pageName.php")) { 
    			require_once("pages/$pageName.php"); 
    		} else { 
    			require_once("pages/404.php"); 
    		}
    	}
    
    ...
    }
    index.php
    <?php 
        require_once('class.php');
        $website = new website;
    
    	$pageName = 'homePage';
    	if(isset($_GET['page'])) { $pageName = $_GET['page']; }
    	$website->pageCaller($pageName);
    ?>
    homePage.php
           $slideTable = $website->getTableName(6);
    bu şekilde bir yapı oluşturdum, homaPage.php'de class daki fonksiyonu kullanmak istediğimde aşağıdaki hatayı veriyor
    hata:Notice: Undefined variable: website in C:\wamp\www\onceltuz\pages\homePage.php on line 4


    Ayrıca: index.php'yi aşağıdaki gibi düzenleyince sıkıntı olmuyor.
        $pageName = 'homePage';
    	if(isset($_GET['page'])) { $pageName = $_GET['page']; }
    	//$website->pageCaller($pageName);
    				
    	if(file_exists("pages/$pageName.php")) { 
    		require_once("pages/$pageName.php"); 
    	} else { 
    		require_once("pages/404.php"); 
    	}
    Yani sorun homePape.php yi class içindeki bir fonksiyon ile include edince ortaya çıkıyor, bunu nasıl çözebilirim ?
  • 29-04-2013, 16:57:21
    #2
    public static function pageCaller($pageName).....
  • 29-04-2013, 17:00:27
    #3
    index.php dosyasının en başına
    global $website
    eklerseniz sorun ortadan kalkar ama ne denli sağlıklı olur bilmem

    bunun yerine index.php dosyasında kullanacağınız fonksiyonlar için ayrı bir class tanımlayıp o şekilde de kullanabilirsiniz.
    ya da extends ile iki classı birleştirebilirsiniz ( denemedim ama çalışır galiba )
  • 29-04-2013, 18:50:17
    #4
    homePage.php de bul:

    $slideTable = $website->getTableName(6);
    değiştir

    $slideTable = $this->getTableName(6);
  • 29-04-2013, 19:27:35
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    http://tr.php.net/manual/tr/language.oop5.autoload.php
  • 30-04-2013, 09:55:21
    #6
    Arkadaşlar tavsiyeler malesef bir işe yaramadı, saintx verdiğin linke baktım; fakat pek bişey anlayamadım bu link 2 farklı sınıftan bahsediyor, ben ise tek sınıf kullanıyorum. Farklı tavsiyesi olan yada sorunun çözümünü bilen arkadaşlar yardımcı olursanız çok iyi olacak.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 09:55:21 -->-> Daha önceki mesaj 09:44:08 --

    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    homePage.php de bul:

    $slideTable = $website->getTableName(6);
    değiştir

    $slideTable = $this->getTableName(6);
    Evet bu şekilde kullandım ve sorun çözüldü teşekkürler.