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

CaptainSalvador

Adanmış Üye
17 Eki 2014
6,073
15
Teşkilat
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.

ALINTI
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.