kam umístit konstanty a soubor s nimi
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- greeny
- Člen | 405
Ahoj, většina konstant patří logicky k nějakému objektu (např. typy nějaké entity, apod.):
<?php
class Book {
const TYPE_TEXT = 0;
const TYPE_COMICS = 1;
protected $type;
public function isComics() {
return $this->type === self::TYPE_COMICS;
}
public function getType() {
return $this->type;
}
}
// použití
$book = new Book();
$isComics = $book->isComics();
$isText = $book->getType() === $book::TYPE_TEXT;
?>
Pokud nedokážeš konstantu nikam zařadit, pak můžeš udělat nějakou třídu jen na konstanty:
<?php
class Constants {
const CONSTANT_ONE = 'one';
const CONSTANT_TWO = 'two';
}
// použití
$constantOne = Constants::CONSTANT_ONE;
?>
- greeny
- Člen | 405
amik napsal(a):
Obecně, pokud chceš ctít princip dependency injection, zapomeň na to, že k něčemu můžeš přistupovat odkudkoli :) všechny třídy by si o všechny závislosti měly říct (v konstruktoru nebo jinak), žádné globální proměnné, konstanty ani podobné neřesti by se neměly používat.
Konstanty klidně používat, ale nemyslí se tím žádné nastavení (nějaké cesty, apod.), spíš jenom třeba to, co jsem ukázal na příkladu s typem knihy (konstanta jako zástupný symbol).
Viz příklad Nette\Forms\Form pravidla (Form::MIN_VALUE, etc.)