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”

  1. Kurcze, pierwsze słyszę o nowdocu, dzięki za informację. Aż dziw bierze ilu to się rzeczy nie wie o swojej własnej technologii. ;]

  2. Ralf napisał:

    Dokładnie Tomaszu, dokładnie tak jest.

  3. 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. ;]

  4. Ralf napisał:

    Jest tak. :)

Trackbacks/Pingbacks

  1. Blog o PHP » Archiwum Bloga » late static bindings - [...] nowdoc - dodatkowe informacje TUTAJ [...]

Pozostaw Odpowiedź