Portál AbcLinuxu, 13. července 2025 16:12


Dotaz: Problém s __autoload() v php;

1.10.2013 20:14 Jara
Problém s __autoload() v php;
Přečteno: 294×
Odpovědět | Admin
Ahoj. Proč se neukončí celý script (na řádku 16 ) když neexistuje soubor? Žádnou chybu fakt nevidím :( Děkuji
     function __autoload($class_name)
     {
          $array = array(
               '/sys/pub/'.$class_name.'.php',
               '/sys/las/'.$class_name.'.php'
          );

          foreach ($array as $file)
          {
               if (file_exists($file))
               {
                    require_once($file);
                    return true;
               }
          }
      exit(); #R16:
     }
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.10.2013 20:25 NN
Rozbalit Rozbalit vše Re: Problém s __autoload() v php;
Odpovědět | | Sbalit | Link | Blokovat | Admin
Protoze prvni 'return' ukonci celou funkci?
2.10.2013 03:03 Jara
Rozbalit Rozbalit vše Re: Problém s __autoload() v php;
Myslíš na řádku 13 ? Ten return se snad provede jen pokud soubor existuje, ne?
1.10.2013 20:29 Kit
Rozbalit Rozbalit vše Re: Problém s __autoload() v php;
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mně to funguje bezvadně. Jen mi není jasné, proč to děláš tak komplikovaně, proč takovou práci nepřenecháš PHP, ať to udělá samo.
2.10.2013 03:05 Jara
Rozbalit Rozbalit vše Re: Problém s __autoload() v php;
Mně to funguje bezvadně.
Tak to nechápu proč mně ne..
Jen mi není jasné, proč to děláš tak komplikovaně, proč takovou práci nepřenecháš PHP, ať to udělá samo.
Nerozumím, co mám přesně přenechat PHP?
2.10.2013 07:23 Kit
Rozbalit Rozbalit vše Re: Problém s __autoload() v php;
function __autoload($class_name) {
    set_include_path('/sys/pub/'.PATH_SEPARATOR.'/sys/las/');
    require($class_name.'.php');
}
Josef Kufner avatar 2.10.2013 19:36 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Problém s __autoload() v php;
Tím, že zavoláš exit zamaskuješ chybu a ztížíš hledání problému. Navíc __autoload je deprecated a použij místo toho spl_autoload, který umožňuje zaregistrovat více funkcí, takže např. každá knihovna může přidat svou.

Prostě spočítej předpokládanou cestu a udělej require. To stačí. Ani není třeba require_once, neboť autoload se znovu nezavolá, pokud už třída je definována.
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.