Satırdan fazla PHP sınıfı sabit dize değişkeni yayılan

2 Cevap php

Ben tüm yöntemleri kullanılabilir olacak bir PHP sınıfı için bir dize değişkeni, olmasını istediğiniz.

Ancak, bu değişken bu yüzden birden fazla satır içine ayırmak istiyoruz, oldukça uzun.

Örneğin,

$variable = "line 1" .
            "line 2" .
            "line 3";

Ancak yukarıda çalışmıyor.

Ben EOD denedim, ama PMİ sınıf içinde izin verilmez. Ben sınıf dışında ilan zaman, ben sınıf içinde değişkene erişemezsiniz.

En iyi yolu nedir?

2 Cevap

Eğer PHP >= 5.3 kullanıyorsanız, size HEREDOC syntax sizin dize bildirmek için kullanabilirsiniz:

class MyClass {
    public $str = <<<STR
this is
a long
string
STR;

}

$a = new MyClass();
var_dump($a->str);

Ama bu:

  • PHP> = 5.3 ile mümkündür
  • and the string must not contain any variable
    • dize'nın değerini derleme zamanında bilinmesi gerekir, çünkü bu
    • hangi btw açıklıyor ., işe yaramaz ile birleştirme,: o yürütme anda bitti.

Ve başka bir dezavantajı bu dize satırsonu koyacağız ki -, ya da değil, kötü bir şey olabilir ki.


If you are using PHP <= 5.2 :

Bunu yapamaz; Bir çözüm sınıf 'kurucu içinde dize başlatmak için olabilir:

class MyClass {
    public $str;
    public function __construct() {
        $this->str = <<<STR
this is
a long
string
STR;
    }
}

(same not with newlines)

Yoksa, burada, sen dizeleri concatenations yapabilirsiniz:

class MyClass {
    public $str;
    public function __construct() {
        $this->str = 'this is' .
                     'a long' .
                     'string';
    }
}

(this way, no newlines)


Else, you can have a string that's surrounded by either single or double quotes, and put it on several lines :

class MyClass {
    public $str = "this is
a long
string";
}

(Here, again, you'll have newlines in the resulting string)

$var = "this is a really long variable and I'd rather have it " .
 "span over multiple lines for readability sake. God it's so hot in here " .
 "can someone turn on the A/C?";
echo $var;

Hangi çıkışlar:

Bu gerçekten uzun bir değişkendir ve ben oldukça bu okunabilirliği uğruna birden fazla satır üzerinde yayılan olurdu. Allah o kimse / C açabilirsiniz burada çok sıcak?

Şimdi ne var string concatenation operator kullanarak çalışır. Eğer daha fazla konuda bilgi, bazı kod ya da belki bir başka açıklama sonrası eğer how çalışmıyor. Daha fazla bilgi daha iyi bir cevap götürecektir.