Robotloader a dvě stejné třídy
- webdata
- Člen | 153
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
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
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)