IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Autoloader problém

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Jenkings
Tvůrce
Avatar
Jenkings:19.8.2013 13:28

Ahoj.

Nechápu proč mi autoloader vyhazuje tuto chybu :

Cannot redeclare __autoload() (previously declared in /opt/lampp/htdocs/connect.php:16) in /opt/lampp/htdocs/connect.php on line 16

Přitom řádek 16 vypadá takhle

function __autoload($class_name) {include './classes/'.$class_name . '.class.php';}

Autoloader sice funguje, ale nechápu co způsobuje tu chybu

Odpovědět
19.8.2013 13:28
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Odpovídá na Jenkings
Neaktivní uživatel:19.8.2013 13:34

Zřejmě máš dvakrát autoload.

Nahoru Odpovědět
19.8.2013 13:34
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jenkings
Kit:19.8.2013 13:38

__autoload() se obvykle dává jen jednou do celé aplikace. Dávám ho hned na 2. řádek v index.php

Trochu se zamysli nad názvem adresáře "classes". Není sémantický.

Editováno 19.8.2013 13:40
Nahoru Odpovědět
19.8.2013 13:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Jenkings:19.8.2013 13:49

já to tam mám právě jen jednou.. a z toho co jsem pochopil z toho erroru to bere že na tom jednom řádku je to dvakrát :D

Nahoru Odpovědět
19.8.2013 13:49
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na Kit
Jenkings:19.8.2013 13:51

mám ho na začátku kódu který je includovaný nad hlavičkou v každé stránce.

Nahoru Odpovědět
19.8.2013 13:51
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Odpovídá na Jenkings
Neaktivní uživatel:19.8.2013 13:52

Zkus to posunout o jeden řádek, třeba je to jen bug.

Nahoru Odpovědět
19.8.2013 13:52
Neaktivní uživatelský účet
Avatar
Odpovídá na Jenkings
Neaktivní uživatel:19.8.2013 13:53

To bude ono, dej to do indexu, ukazuje se ti to víckrát.

Nahoru Odpovědět
19.8.2013 13:53
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jenkings
Kit:19.8.2013 13:53

Tak ho asi includuješ 2×.

Includovat __autoinclude() není zrovna nejlepší nápad.

Editováno 19.8.2013 13:54
Nahoru Odpovědět
19.8.2013 13:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jenkings
Kit:19.8.2013 13:56

K čemu máš v každé stránce hlavičku?

Nahoru Odpovědět
19.8.2013 13:56
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na Kit
Jenkings:19.8.2013 14:01

to je na dlouhý vysvětlování...
ale už jsem to pořešil a funguje to, takže dobrý

Editováno 19.8.2013 14:01
Nahoru Odpovědět
19.8.2013 14:01
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jenkings
Kit:19.8.2013 14:13

Myslím si, že na tom není co vysvětlovat. Také jsem to tak dělal, než jsem přešel na objekty.

Nahoru Odpovědět
19.8.2013 14:13
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na Kit
Jenkings:19.8.2013 14:18

O to se právě snažím ;)
jenže asi bude chvilku trvat než si na objekty v PHP zvyknu ;)

Nahoru Odpovědět
19.8.2013 14:18
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jenkings
Kit:19.8.2013 14:22

Na dobré se zvyká rychle. Časem se naučíš dělat technikou MVC i uvnitř jedné třídy.

Nahoru Odpovědět
19.8.2013 14:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jenkings
Kit:19.8.2013 15:19

To, co jsem napsal tady:
http://www.itnetwork.cz/dev-lighter/176
je téměř vše, co mám v index.php. Zbytek je v objektech.

V indexu mám navíc už jen session_start() a aktivaci modelu.

Nahoru Odpovědět
19.8.2013 15:19
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na Kit
Jenkings:19.8.2013 15:24

No.. třeba se k takovému kódu taky někdy dopracuju...

Nahoru Odpovědět
19.8.2013 15:24
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jenkings
Kit:19.8.2013 15:31

Výhodou tohoto postupu je, že je to velmi rychlé. Includují se jen ty třídy, které jsou pro vykonání úlohy potřebné. Ostatní v klidu spí. Takže aplikace má třeba 10000 řádek, ale když reaguje na klientovo kliknutí, proběhe jich třeba jen 100-200 a zbytek se vůbec nenatahuje.

Nahoru Odpovědět
19.8.2013 15:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na Kit
Jenkings:19.8.2013 15:37

jasně, akorát tomu tvému kódu jaksi moc nerozumím..ale to snad časem přijde..

Nahoru Odpovědět
19.8.2013 15:37
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jenkings
Kit:19.8.2013 15:50

Asi bych ho mohl okomentovat :)

Je to v podstatě router, který spojí název objektu s názvem operace. Vznikne tak název třídy, ze které se vytvoří objekt, kterému se předá aktivovaný model.

Ještě to chce trochu vypilovat, protože podtržítková notace není to pravé. Variantou by mohlo být, kdyby název adresáře byl vždy roven názvu namespace. Pak by se do $className dal symbol \ místo podtržítka a bylo by to.

Nahoru Odpovědět
19.8.2013 15:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na Kit
Jenkings:19.8.2013 15:53

Už mi to začíná trochu zapadat ;) každopádně tohle je na mně zatím ještě high-level.Musím začít na jednodušších věcech.

Nahoru Odpovědět
19.8.2013 15:53
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jenkings
Kit:19.8.2013 16:00

Je to sice high-level, ale při té jednoduchosti se to dá používat všude.

Proti tvému řešení je rozdíl v tom, že ty includuješ společné vlastnosti, ale já naopak startuji se společnými vlastnostmi a includuji jen to, co k nim potřebuji navíc. Pokud třeba zjistím, že požadavek je chybný, vůbec nemusím natahovat výstupní šablonu a rovnou klientovi pošlu chybový stav s přesměrováním.

Nahoru Odpovědět
19.8.2013 16:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na Kit
Jenkings:19.8.2013 16:09

Jasně ;) já tomu rozumím principielně, ale abych se naučil to technicky vyřešit tak na to musím jít od základů ;)

Nahoru Odpovědět
19.8.2013 16:09
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jenkings
Kit:19.8.2013 16:10

Přidal jsem tam pár komentářů...

Nahoru Odpovědět
19.8.2013 16:10
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 22 zpráv z 22.