Joomla! 1.5 Kodlarına Giriş (Bölüm 3)

Joomla! 1.5 kodlarını incelemeye kaldığımız yerden devam ediyoruz.

Joomla! 1.5 kodlarını incelemeye kaldığımız yerden devam ediyoruz.

includes klasörü içerisindeki defines.php ve framework.php dosyaları dışındaki hemen hemen tüm dosyalar görüntü ve Joomla! 1.0.x serisine uyumlu eklentilerin hata vermemesi adına bırakılmış dosyalardır. İçeriklerine bakarsanız çoğunun libraries klasörü içerisindeki başka dosyalara yönlendirildiğini görürsünüz. Dolayısıyla libraries klasörü içerisindeki dosyaları incelemek faydalı olacaktır.

Hatırlarsanız bir önceki yazımızda jimport fonksiyonundan ve bunun JLoader sınıfına ait bir fonksiyon olduğundan, ayrıca libraries klasörü içerisindeki loader.php içerisinde bulunduğundan bahsetmiştik. Şimdi kısaca JLoader sınıfını ve jimport fonksiyonunu tanıyalım. loader.php dosyasının en altında şöyle bir fonksiyon vardır;


function jimport( $path ) {

    return JLoader::import($path);

}



Bu jimport fonksiyonumuz bizi JLoader sınıfının içerisindeki import fonksiyonuna $path değeri ile birlikte gönderiyor. O halde import fonksiyonuna bakalım.


function import( $filePath, $base = null, $key = 'libraries.' )

    {

        static $paths;



        if (!isset($paths)) {

            $paths = array();

        }



        $keyPath = $key ? $key . $filePath : $filePath;



        if (!isset($paths[$keyPath]))

        {

            if ( ! $base ) {

                $base =  dirname( __FILE__ );

            }



            $parts = explode( '.', $filePath );



            $classname = array_pop( $parts );

            switch($classname)

            {

                case 'helper' :

                    $classname = ucfirst(array_pop( $parts )).ucfirst($classname);

                    break;



                default :

                    $classname = ucfirst($classname);

                    break;

            }



            $path  = str_replace( '.', DS, $filePath );



            if (strpos($filePath, 'joomla') === 0)

            {

                /*

                 * If we are loading a joomla class prepend the classname with a

                 * capital J.

                 */

                $classname  = 'J'.$classname;

                $classes    = JLoader::register($classname, $base.DS.$path.'.php');

                $rs         = isset($classes[strtolower($classname)]);

            }

            else

            {

                /*

                 * If it is not in the joomla namespace then we have no idea if

                 * it uses our pattern for class names/files so just include.

                 */

                $rs   = include($base.DS.$path.'.php');

            }



            $paths[$keyPath] = $rs;

        }



        return $paths[$keyPath];

    }



includes/framework.php dosyamızın en alt satırında bazı kütüphane bilgilerini almıştık. Bu fonksiyonda anlatılmak isteneni o satırlardan bir örnek verelim.


jimport( 'joomla.application.menu' );



Buradaki joomla.application.menu ifadesini import fonksiyonumuz parçalara bölüyor ve bunları bir dizin sırasına koyuyor. Yani biz libraries/joomla/application/menu.php dosyasını alıyoruz.

Başka bir örnek verelim.

jimport( 'joomla.language.language');


Bu komut ile libraries/joomla/language/language.php dosyasını alıyoruz.

Bir başka örnek;


jimport('joomla.application.component.controller');



Bu komut ile libraries/joomla/application/component/controller.php dosyasını alıyoruz.

jimport fonksiyonunu ve loader.php dosyasını da incelemiş olduk. Kullanacağımız birçok eklentide jimport fonksiyonunu en baştan kullanacağımız için bu fonksiyonun işlevinin öğrenilmesi bizler için iyi olacaktır.
  • Etiketler;
Soner Ekici
1981 yılında Denizli' de doğdu. 1999 yılında başladığı PHP ve MySQL çalışmalarına 2004 yılında Joomla! ile devam etti. Joomla! için çeşitli eklentiler kodladı. <p>Halen Joomla! için aktif olarak eklentiler kodlayan Soner Ekici Afyonkarahisar ili Şuhut ilçesinde pratisyen hekim olarak görev yapmaktadır.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git