Dilde php sınıfı - kısayol işlevi

1 Cevap php

İyi akşamlar,

Şu anda gelişmekte olan kulüpler benim app, ben Dillilikten işleyen bir sınıf var. Öyle tarafından dışarıdan bir çeviri kaynağı böyle bir şey tanımlanmış olacak bir ilişkisel dizi, yükleme yapar:

'Source input' => 'Zdroj vstupního'

Şu anda bu şu şekilde adresleme ve sınıfını kullanarak sorunsuz çalışıyor:

$lang = new Lang('Czech');
print $lang->_('Source input'); // output: "zdroj vstupního"

Ancak, "Lang" sınıfının bir örneğini bağlı değildir, kısa kesme fonksiyonu bu istiyorum. Ben statik yöntemlerle deney denedim, ama şimdiye kadar sansızım.

Ben başarmak istiyorum ne sahte kod.

 $lang = new Lang('Czech');
 $lang->setCurrent('contact_us'); // loads the language file for contact_us
 <p>
   <?php print _('Source input'); ?> // output: "zdroj vstupního"
 </p>

Doğru yönde bir nokta harika olurdu. Teşekkürler!

1 Cevap

Eğer bir global $lang deyimi kullanmak eğer _ işlevi küresel $lang değişkeni erişebilirsiniz:

<?php
    class Lang
    {
        function _($str)
        {
            return 'Zdroj vstupního';
        }
    }

    function _($str)
    {
        global $lang;
        return $lang->_($str);
    }

    $lang = new Lang('Czech');
    print _('Source input');
?>

Alternatif yerine sınıfın bir örneğini oluşturma Lang sınıfında bir static değişkeni kullanabilirsiniz. Eğer genel ad bir $lang değişkeni oluşturmak zorunda kalmamak gibi bu şekilde biraz daha temiz.

<?php
    class Lang
    {
        static $lang;

        function setCurrent($lang)
        {
            self::$lang = $lang;
        }
    }

    function _($str)
    {
        if (Lang::$lang == 'Czech')
        {
            return 'Zdroj vstupního';
        }
    }

    Lang::setCurrent('Czech');
    print _('Source input');
?>