Pratik Zend Config Kullanımı

Share Button

Zend framework ile proje geliştirirken konfigürasyon dosyalarını okumak için sıklıkla kullandığım kütüphanemin kaynak kodlarını sizlerle paylaşmak istedim.

MyVendor/Config.php :

<?php
class MyVendor_Config extends MyVendor_Pattern_Singleton
{
    private $_config = array();

    const FILE_TYPE_JSON = 'Json';
    const FILE_TYPE_XML = 'Xml';
    const FILE_TYPE_INI = 'Ini';
    const FILE_TYPE_YAML = 'Yaml';

    /**
     * returns configuration Data.
     * @param string $fileName
     * @param string $section
     * @return object:
     */
    public function loadFromFile($fileName, $section = null)
    {
        $key = $fileName . '_' . $section;
        if( ! array_key_exists( $key, $this->_config ) ) {
            $this->_config[$key] = $this->_getAdapter($fileName, $section);
        }

        return $this->_config[$key];
    }

    /**
     * returns file extension.
     * @param string $fileName
     * @return string
     */
    private function _getExtension($fileName)
    {
        $explodedFileName = array_reverse(explode('.', $fileName));
        $extension = reset($explodedFileName);
        return ucfirst($extension);
    }

    /**
     * returns reader adapter.
     * @param string $fileName
     * @param string $section
     * @throws MyVendor_Config_Exception
     * @return Zend_Config_Json|Zend_Config_Xml|Zend_Config_Ini|Zend_Config_Yaml
     */
    private function _getAdapter($fileName, $section = null)
    {
        $extension = $this->_getExtension($fileName);
        switch($extension) {
            case self::FILE_TYPE_JSON:
                return new Zend_Config_Json($fileName, $section);
            case self::FILE_TYPE_XML:
                return new Zend_Config_Xml($fileName, $section);
            case self::FILE_TYPE_INI:
                return new Zend_Config_Ini($fileName, $section);
            case self::FILE_TYPE_YAML:
                return new Zend_Config_Yaml($fileName, $section);
            default:
                throw new MyVendor_Config_Exception('Unknown file type:' . $extension, '');
        }
    }
}

MyVendor/Pattern/Singleton.php :

<?php
abstract class MyVendor_Pattern_Singleton
{
    private static $_instance = array();
    
    final static public function getInstance()
    {
        $class = get_called_class();
        if( ! array_key_exists($class, self::$_instance) ) {
            self::$_instance[ $class ] = new $class;
        }
        return self::$_instance[$class];
    }
}

MyVendor/Config/Exception.php :

<?php
class Sd_Config_Exception extends Exception
{}

Örnek Kullanım:

<?php
$file = "myconfig.xml";
$config = MyVendor_Config::getInstance()->loadFromFile($file, APPLICATION_ENV);
Share Button

About İbrahim Gündüz

1983 yılında İstanbul’da doğdu. İlkokul yıllarında cobol ve basic le olan tanışması, yazılıma olan ilgisini arttırdı 2005 yılında. Uludağ Üniversitesi Teknik Bilimler Meslek Yüksek Okulu Elektronik bölümünden mezun olan Gündüz, çeşitli alanlarda faaliyet gösteren kurumlarda yazılım geliştirici olarak görev almıştır. Mesleki ilgi alanları, ölçeklenebilir sistemler, uygulama entegrasyonları ve ödeme sistemleridir. Halen Markafoni back end geliştirici olarak çalışmaktadır.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir