Ciągi znaków są nieodłącznym elementem tworzonych przy użyciu PHP skryptów. Język ten udostępnia kilka metod deklaracji tego typu danych. W wersji 5.3 dodano nową – nowdoc. W tym krótkim wpisie pokażę jak z niej korzystać.
Stringi
Zatem istnieją cztery sposoby tworzenia ciągów znaków:
- pojedynczy cudzysłów (łańcuchy nieprzetwarzane)
- cudzysłów (łańcuchy przetwarzane)
- heredoc
- nowdoc
Heredoc i nowdoc
Korzystając ze składni heredoc deklarowane łańcuchy są przetwarzane. Spójrzmy na poniższy przykład:
$a = 1; // deklaracje przy uzyciu cudzyslowia // dodano w PHP 5.3 // mozna go spokojnie pominac echo <<<"HER" $a HER;
Na wyjściu otrzymamy:
1
Natomiast nowdoc nie oferuje takiej możliwości – zachowując się analogicznie jak pojedynczy cudzysłów:
$a = 1; echo <<<'HER' $a HER;
Wypisze:
$a
Od PHP 5.3 obie metody mogą być używane do deklaracji zmiennych statycznych oraz stałych i właściwości klas. Popatrzmy:
class Heredoc {
const A = <<<"HER"
Test
HER;
public $m = <<<"HER"
Test
HER;
}
class Nowdoc {
const A = <<<'HER'
Test
HER;
public $m = <<<'HER'
Test
HER;
}
I na koniec jeszcze jeden przykład:
function heredoc () {
static $a = <<<"HER"
1
HER;
return $a++;
}
function nowdoc () {
static $a = <<<'HER'
1
HER;
return $a++;
}
I to tyle w temacie stringów.
4 Odpowiedzi : “nowdoc”
Trackbacks/Pingbacks
- Blog o PHP » Archiwum Bloga » late static bindings - [...] nowdoc - dodatkowe informacje TUTAJ [...]


Kurcze, pierwsze słyszę o nowdocu, dzięki za informację. Aż dziw bierze ilu to się rzeczy nie wie o swojej własnej technologii. ;]
Dokładnie Tomaszu, dokładnie tak jest.
Z drugiej strony rzadko mam potrzebę zapisania czegoś tak „wielkiego” literalnie w kodzie, dlatego pewnie nie musiałem szukać rozwiązania – zwykle są to tylko stałe konfiguracyjne, albo jakieś jednolinijkowe komunikaty. Ale i tak dzięki. ;]
Jest tak.