Jak přidat cizí třídu do aplikace

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
CJHornster
Člen | 56
+
0
-

Č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
+
0
-

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
+
+2
-

Lepší než \File je uvést use File; má to dvě výhody

  1. na začátku souboru máš vyjmenované všechny závislosti
  2. nemusíš pak psát v kódu zpětné lomítko
CJHornster
Člen | 56
+
0
-

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)

David Kudera
Člen | 455
+
0
-

Tu exception zachytáváš sám? Nebude řešení opět to stejné?

CJHornster
Člen | 56
+
0
-
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
+
0
-

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)

CJHornster
Člen | 56
+
0
-

jj už jsem to četl, ale není to ani exceptions\FileNotFoundException :(

Michal Vyšinský
Člen | 608
+
0
-

editoval jsem můj poslední post

David Kudera
Člen | 455
+
0
-

Š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
+
0
-

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
+
0
-

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