Robotloader a dvě stejné třídy

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

Zdravím,

Mám další hloupej dotaz. Potřebují aby mi Rotloader načetl pouze první nalezenou třídu
a další třídy se stejným názvem, aby ignoroval. Předpokládám že robotloader bude procházet
adresáře tak jak jsou zadané:

$configurator->createRobotLoader()
	->addDirectory(APP_DIR)
	->addDirectory(LIBS_DIR)
	->addDirectory('adresar1')
	->addDirectory('adresar2')
	->register();

Takže když dám do adresar1 třídu, která je i v adresar2, tak by se mi hodilo aby se načtla ta
z v adresar1 a ta v adresar2 aby byla ignorovana.

nanuqcz
Člen | 822
+
0
-

Ahoj,
a soubor netterobots.txt by ti nestačil? https://doc.nette.org/cs/robot-loader#…

Jinak si budeš muset podědit RobotLoader a asi v něm zachytávat vyjímky původního RobotLoaderu, nebo tak něco. Anebo v každém souboru s načítanou třídou použít if(!class_exists('NazevTridy')){. Podle mě ale takovýhle požadavek naznačuje špatný návrh aplikace…

webdata
Člen | 153
+
0
-

Jde mi o to, že třida bude nasledujici:

class MojeTrida {
	function funkce1 {
	.
	.
	.

	}

	function funkce2 {
	.
	.
	.
	}
}

Tato třída je základní má danou nějakou funkci a je v adresar2. Někdo se pak rozhodne
že v té třídě něco změní a takto změněnou třídu by nahrál do adresar1 kde by se hned videlo
jake tridy jsou nejak modifikovane. A hlavne tridy v adresar1 by me jako autora nezajimaly.

Samozrejme ze to muzu nacitat rucne, ale proc kdyz uz to nacita robotLoader.

V mém případě nepřipadá nějaké dědění nebo interface v úvahu.

Takže pro toho kdo si bude chtít udělat nějakou změnu tak pro něj bude adresar1. Pokud
probehne nejaky update a bude zmena v adresari2 tak ma smulu. Protoze na to bude mit adresar1.

Editoval webdata (29. 3. 2012 11:56)