abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 00:22 | Komunita

V Norimberku probíhá do pátku ownCloud conference 2018, tj. konference vývojářů a uživatelů open source systému ownCloud (Wikipedie) umožňujícího provoz vlastního cloudového úložiště. Přednášky lze sledovat online. Videozáznamy jsou k dispozici na YouTube. Při této příležitosti byl vydán ownCloud Server 10.0.10. Z novinek lze zdůraznit podporu PHP 7.2. Vydán byl také ownCloud Desktop Client 2.5.0. Vyzkoušet lze online demo ownCloudu.

Ladislav Hagara | Komentářů: 0
dnes 00:11 | Pozvánky

Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.

xkucf03 | Komentářů: 0
včera 16:11 | Komunita

Vývojáři relačního databázového systému PostgreSQL oznámili, že schválili svůj Code of Conduct (CoC) aneb kodex chování vývojářů PostgreSQL.

Ladislav Hagara | Komentářů: 14
včera 14:44 | Nová verze

Byla vydána verze 1.0 poštovního serveru Courier (Wikipedie). Aktualizovány byly také související balíčky jako Courier authentication library, Courier-IMAP, SqWebMail, maildrop nebo Cone.

Ladislav Hagara | Komentářů: 0
včera 02:22 | Zajímavý software

Společnost ​Versity Software otevřela svůj archivační souborový systém ScoutFS. Zdrojové kódy jsou k dispozici na GitHubu (kernel space, user space) pod licencí GPLv2.

Ladislav Hagara | Komentářů: 21
včera 00:44 | Nová verze

Byla vydána verze 4.2 programovacího jazyka Swift (Wikipedie). Zdrojové kódy jsou k dispozici na GitHubu. Ke stažení jsou oficiální binární balíčky pro Ubuntu 18.04, Ubuntu 16.04 a Ubuntu 14.04. Přehled novinek ve videozáznamu přednášky z WWDC 2018.

Ladislav Hagara | Komentářů: 3
17.9. 17:55 | Nová verze

Po třech a půl letech od vydání verze 3.4.1 byla vydána nová verze 3.4.2 programu pro filtrování spamu Apache SpamAssassin (Wikipedie). Z novinek lze zmínit 4 nové pluginy. Pravidla budou ověřována pomocí SHA-256 a SHA-512 místo SHA-1. Řešeny jsou také 4 bezpečnostní chyby. Například chyba CVE-2018-11780 v pluginu PDFInfo zneužitelná ke vzdálenému spuštění kódů (RCE).

Ladislav Hagara | Komentářů: 0
17.9. 16:22 | Pozvánky

Díky openSUSE Video Teamu lze sledovat živý přenos většiny prezentací z letošní SUSE Labs Conference. Záznamy proběhlých prezentací budou postupně přidávány na kanál SUSE Labs na YouTube.

Michal Kubeček | Komentářů: 0
17.9. 10:22 | Pozvánky

Na webových stránkách konference LinuxDays byl zveřejněn program přednášek a workshopů. Současně byla spuštěna registrace. Konference proběhne o víkendu 6. a 7. října 2018 v Praze v areálu ČVUT v Dejvicích na Fakultě informačních technologií.

Ladislav Hagara | Komentářů: 0
17.9. 02:22 | Komunita

Linus Torvalds se v oznámení o vydání 4. rc verze Linuxu 4.19 omlouvá za své chování. Posledním commitem před zvýšením rc3 na rc4 bylo odstranění souboru s Code of Conflict a přidání souboru s Contributor Covenant Code of Conduct vycházejícího z Contributor Covenant. Vývoj Linuxu 4.19 dokončí Greg Kroah-Hartman. Linus Torvalds si bere volno a bude pracovat na svém chování. Pravděpodobně vylepší svého poštovního klienta, aby mu nedovolil odesílat emaily obsahující nadávky.

Ladislav Hagara | Komentářů: 51
Na optické médium (CD, DVD, BD aj.) jsem naposledy vypaloval(a) data před méně než
 (13%)
 (15%)
 (20%)
 (23%)
 (24%)
 (4%)
 (1%)
Celkem 357 hlasů
 Komentářů: 33, poslední 16.9. 11:55
Rozcestník

Dotaz: Jak zavolat třídu v PHP podle zadané url

20.3.2017 19:30 Libor
Jak zavolat třídu v PHP podle zadané url
Přečteno: 324×
Ahoj chlapy, potřeboval bych poradit s částí kódu v PHP.

v proměnné $_GET['url'] mám uloženou vždy celou url
echo $_GET['url'];
vypíše
/katalog/priroda-cr/voda-sladka/ryby-male
a potřebuji z této url vytvořit nový objekt třídy včetně namespace
$obj = new \Controls\Katalog\PrirodaCr\VodaSladka\RybyMale ();
Pokud třída neexistuje zavolat
$obj = new \Controls\Error404 ();
Poradil by mi prosím někdo jak to jednoduše udělat? Předem děkuji za pomoc.

Odpovědi

21.3.2017 06:52 frr | skóre: 33
Rozbalit Rozbalit vše Re: Jak zavolat třídu v PHP podle zadané url

Nevím jestli jednoduše, a navíc nejsem PHPkář, spíš jsem se kdysi trochu hrabal pod sukněma Perlu... vidím to rámcově takto:

  1. kontrola vstupních dat = rozparsovat si to URL a převést si ho na striktní výčet možností ("enum"), jako že modul 1/2/3/ nebo chyba. Použil bych třeba regulární výrazy a/nebo řetězcové porovnání v kombinaci s rozskokem ve stylu switch/case nebo if-then-else. Tzn. začít hezky defenzivně.
  2. Návazně na to by se dala přímo v PHP zdrojáku vytvořit instance té či oné třídy, hezky explicitně, možná přímo v tom switch/case bloku.
  3. Pokud dáváte přednost životu na hraně, asi by se to URL dalo stringovými operacemi přežvejkat až na "cestu ke třídě" a tu pak předhodit funkci eval() - ale té funkci musíte podle mého předat určitý minimální blok kódu, který má nějakou hlavu a patu. V zásadě nejmíň "jeden ucelený řádek imperativního zdrojáku", pokud se nepletu. A hlavně pozor na kontrolu vstupních dat, abyste si nezavlekl do programu bezpečnostní díru (code injection).

[:wq]
21.3.2017 08:01 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Jak zavolat třídu v PHP podle zadané url
něco jako,....
$class = '\Controls'.preg_replace_callback('/([-\/])(.)/', function($a){ return ($a[1]=='/'?'\':'').strtoupper($a[2]);}, $_GET['url']);
if (class_exists($class)){
	$obj = new $class();
} else {
	$obj = new \Controls\Error404();
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
22.3.2017 14:56 frr | skóre: 33
Rozbalit Rozbalit vše Re: Jak zavolat třídu v PHP podle zadané url
Dal bych fajfku že "řešení", ale nemám na čem otestovat :-) Díky za krásný insider snippet.
[:wq]
23.3.2017 00:01 OldFrog {Ondra Nemecek} | skóre: 30 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Jak zavolat třídu v PHP podle zadané url
K čemu to má sloužit? Nevím jestli je dobrý nápad mít pro každé zvíře jednu třídu :-)
-- OldFrog

Založit nové vláknoNahoru

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

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.