Jak přidat cizí třídu do aplikace
- CJHornster
- Člen | 56
Čau mám problém,
na foru jsem našel celkem dobrý třídy pro práci se soubory
https://forum.nette.org/cs/2265-prace-se-soubory
ale nedaří se mě to nainstalovat: v catch vidím, že robotloader to našel (sobory jsem nahrál do vendor/others)
$configurator->createRobotLoader()
->addDirectory(__DIR__)
->addDirectory(__DIR__ . '/../vendor/others')
->register();
ale presenter mě pořát křičí, že nemůže najít class file ("Class 'App\Presenters\File' not found")
$dir = new File("../tempImages");
$files = $dir->listFiles();
$this->error($files);
- David Kudera
- Člen | 455
Ahoj, doporučuji si něco přečíst o namespacech.. No a pokud ta třída File namespace nemá, tak
to bude new \File
- Michal Vyšinský
- Člen | 608
Lepší než \File
je uvést use File;
má to dvě
výhody
- na začátku souboru máš vyjmenované všechny závislosti
- nemusíš pak psát v kódu zpětné lomítko
- CJHornster
- Člen | 56
jo díky za odpovědi, tak krize je zažehnána, v use sem místo File měl
Files :D
ted mam spíš porblém s „Class ‚FileNotFoundException‘ not found“
Editoval CJHornster (30. 7. 2014 10:47)
- CJHornster
- Člen | 56
public function canExecute() {
if (!$this->exists()) {
throw new FileNotFoundException($this->getPath());
}
Tools::tryError();
$check = is_executable($this->getPath());
if (Tools::catchError($msg)) {
throw new IOException($msg, self::ERROR_GENERAL);
}
return $check;
}
use Nette\Diagnostics\Debugger,
Nette\Application\UI\Form,
Nette\Database\Table,
Nette\Utils\Strings,
Nette\Utils\exceptions,
Nette\Utils\Finder,
App\Model;
měla by být v Nette\Utils\exceptions ale nevím proč mě to nefunguje
- Michal Vyšinský
- Člen | 608
David Kudera napsal(a):
Ahoj, doporučuji si něco přečíst o namespacech..
To ti pomůže. Jinak by to podle kódu mělo být
exceptions\FileNotFoundException
Edit: sorry – FileNotFoundException
je v namespace
Nette
– takže:
use Nette\FileNotFoundException;
Editoval Michal Vyšinský (30. 7. 2014 11:22)
- David Kudera
- Člen | 455
Škoda že ta knihovna používá exceptiony přímo z nette a ne své vlastní no.. Přece jen v nette se toho za 5 let změnilo hodně a pak to dopadá tak, že musíš cizí knihovny editovat přímo v kódu, když to chceš hned..
- David Kudera
- Člen | 455
btw nestačil by ti klasický finder? Budeš to mít
jistější a zavolat např. na mazání
unlink($file->getFilename())
(nebo $key jako zkratka podle
příkladu v dokumentaci) místo $file->delete()
mi nepřijde
tak hrozný
Editoval David Kudera (30. 7. 2014 11:31)
- CJHornster
- Člen | 56
děkuji za odpovědi, nakonec sem to radši předělal na ten finder v tom File ještě byla třída Tools a ta už v nette dávno není :D a finder je na to skvělej :D