NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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 – Lekce 3 - Atributy a magické metody v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:2.8.2013 21:02

Však mysql_ bylo nahrazeno už dávno, ale na metody pro stringy se stále čeká.

Odpovědět
2.8.2013 21:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:2.8.2013 21:03

Pevně doufám, že se dočkáme. Destruktor upřesním.

Odpovědět
2.8.2013 21:03
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:2.8.2013 21:10

__callStatic() ti umožní napsat hromadu primitivních metod typu String::toLower() do jedné přehledné metody. Celou používanou stringovou knihovnu si takhle můžeš přepsat do jediné metody, která bude mít 10-40 řádek. Osobně bych však dal přednost dynamické metodě, tedy __call().

Odpovědět
2.8.2013 21:10
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:2.8.2013 21:18

Moment, moment, jestli tohle jde, tak se mi asi výrazně zvýší životní úroveň :D Jsou to tedy magické metody pro metody předpokládám.

Odpovědět
2.8.2013 21:18
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:2.8.2013 21:40

Myslíš tohle?

<?php
mb_internal_encoding('UTF-8');

class Str {
    public static function __callStatic($fun, $args) {
        switch (strtolower($fun)) {
            case 'len' : return mb_strlen($args[0]);
            case 'tolower' : return mb_strtolower($args[0]);
            case 'toupper' : return mb_strtoupper($args[0]);
        }
        throw new Exception('Nedefinovaná funkce '.__CLASS__.'::'.$fun);
    }
}

var_dump(Str::len('Žluťoučký'));
var_dump(Str::toupper('Žluťoučký'));
var_dump(Str::tolower('Žluťoučký'));
Editováno 2.8.2013 21:43
Odpovědět
2.8.2013 21:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:2.8.2013 22:05

Pardon, u mysql_ jsem chtěl napsat, že to stále spousta lidí využívá, i když už tu máme mysqli, PDO, Dibi...

Vím co dělá funkce __callStatic, docela užitečná, ale řekněme si upřímně - kde jinde ji použijeme než u prostých knihoven vázajících do sebe opotřebované PHP funkce, nebo datové členy.

Odpovědět
2.8.2013 22:05
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:2.8.2013 22:06

Asi si napíšu pár takových knihoven (String, Int, Math...), protože ty PHP funkce jsou vážně... :D

Odpovědět
2.8.2013 22:06
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:2.8.2013 22:37

S názvem String bych byl opatrný, editor mi ho označil jako používaný (možná rezervovaný) identifikátor. Nevím, k čemu bude třída Int a Math se mi také moc nezdá. Pokud je v další verzi PHP použijí jako identifikátory tříd, budeš mít problém.

Odpovědět
2.8.2013 22:37
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 Neaktivní uživatel
Kit:2.8.2013 22:43

Funkce mysql_ se dají velmi snadno odinstalovat, jsou jen volitelným doplňkem PHP. Ve verzi 5.5 je tato knihovna deprecated a v dalších verzích nebude.

Proto také v případě potřeby dám přednost metodám __call(), __get() a __set().

Odpovědět
2.8.2013 22:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:3.8.2013 6:31

Zvláštní, mě to editor neoznačuje. Mno zkrátka třídy nahrazující PHP funkce (asi vezmu z jiných jazyků). Jestli je použijou jako identifikátory, tak je buď přejmenuju, nebo je odstraním. To není takový problém, však.

Tak ono to stačí nepoužívat. Jen je smutný, že když jdu na fórum programujte.com, tak tam úplně všichni používají mysql_. Nevím, zdá se mi, že na devbooku jsou více učený v oboru a tohle prostě nepovažuju za kód:

$sql = mysql_query ("SELECT * FROM tabulka ORDER by cas LIMIT 1,6");

while ($z = mysql_fetch_assoc($sql))
{

}

(Právě jsem vzal z programujte.com)

Odpovědět
3.8.2013 6:31
Neaktivní uživatelský účet
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 10 zpráv z 84.