Nové operátory

Školení, která pořádám

Článek byl psán jako Silvestrovské povyražení a není tedy myšlen vážně.

Do nejnovější vývojářské verze PHP byla přidaná funkčnost, která dovoluje používat matematické a další symboly pocházející ze znakové sady Unicode.

Nově tak lze psát např. 1 ≤ 2, 5 ≠ 6, 3 × 4 nebo 15 ÷ 5. Jednodušší je i psaní bitových operátorů, kde např. 1 « 3 dává výsledek 8. Pro přístup k vlastnostem a metodám objektů lze místo -> používat . Zjednodušuje se i zápis konstant, kde .25 lze psát jako ¼, .375 jako ⅜ a jako π. Současně dochází k přejmenování některých funkcí, takže exit se stává aliasem pro a array_sum pro . Místo funkce sqrt lze používat . Pro dopřednou kompatibilitu můžete tyto funkce emulovat:

<?php
define("½", .5);
define("¼", .25);
define("⅜", .375);
define("π", M_PI);

if (!function_exists("†")) {
    function ($status = 0) {
        exit($status);
    }
}

if (!function_exists("∑")) {
    function ($array) {
        return array_sum($array);
    }
}

if (!function_exists("√")) {
    function ($x) {
        return sqrt($x);
    }
}

(¼); // .5
cos(π); // -1
();
?>

Staré operátory zatím zůstávají v platnosti, jejich použití ale vyvolá chybu E_STRICT. V další verzi se počítá s definitivním odstraněním zastaralých operátorů.

Jakub Vrána, Ze zákulisí, 31.12.2007, diskuse: 42 (nové: 0)

Diskuse

Honzy:

Jsem jediny, komu se toto zda krok spatnym smerem?

Alespon mi prijde jednodusejsi napsat exit nez † nebo sqrt nez √. Nic proti pouzivani obou, ale zrusit ty puvodni se mi osobne nelibi. :-/

Merxes:

Ačkoliv se nepovažuji za osobu konzervativní, domnívám se že je to velmi špatný krok. Tu odmocninu bych ještě chápal ale zrušení exit mi přijde fakt padlý nahlavu.

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL: Reakce na: Merxes

ikona zaachi:

Osobně si myslím že zde se vývojáři opravdu sekli.
Osobně jsem zvyklí na psaní operátorů tak jak jsou doposud a to ne jenom v PHP ale i v jiných programovacích jazycích, ve kterých jsou jejich názvy dost podobné.
Takováto syntaxe bude dle mého názoru strašně nepřehledná a úplně zbytečná. Nechápu proč chtějí vývojáři vybočovat ze zajetých kolejí a směřovat k něčemu novému, horšímu.
To aby jsem měl při programování zapnutou mapu znaků?

SendiMyrkr:

Ja si myslim to stejny.... zacinam mit dojem ze php se za kazdou cenu snazi bejt originalni a vubec vyvojare nezajima ze tim zpusobi vic skody nez uzitku.... kdyz si clovek uvedomi kolik klavesovejch zkratek umi na to aby obstojne ovladal software kterej pouziva a ted bude muset pouzivat bud dalsi zkratky nebo mit, boze chran, zaplou mapu znaku a v ni neco hledat.... zajimavej napad ale myslim ze by jeste notnou dobu nemel prekrocit hranice prijemnyho rozsireni.... ale pokud hodlaji v dalsi verzi stavajici operatory a nektere fce nahradit nejakymi znaky unicode tak se opet, a tentokrat opravdu znatelne, projevi nejvetsi, alespon podle meho nazoru, neduh php... a tim jsou pomerne caste problemy se zpetnou kompatibilitou....

funtom:

Také se mi to nelíbí ale je to pochopitelný komerční tah Zendu, který plánuje prorazit i na poli hardwaru. Současně s uvolněním nové verze PHP s těmito změnami začne Zend pod svou značkou prodávat klávesnice, které budou tyto speciální znaky přímo obsahovat (nových 15 kláves vedle numerické klávesnice).

Je čas udělat místo na stole :-)

Roman Pištěk:

:-)))

obluda:

-))) drsne

marek:

ten link se mi nedaří otevřít, škoda...  :(

každopádně mi to přijde dost vtipný :) †();

Jan Tichý:

Safraporte, Jakube, tohle mi nesmíš dělat. Chvíli jsem nevěřil svým očím, než jsem zjistil, že už je vlastně zítra...

ikona dgx:

ufff...

pl4nt:

apríl? :)

Roman Pištěk:

◊() nebo ɷ() namísto __destruct() ...

škoda, že while (!∞) { ... } by nemělo v PHP valné využití...

Michal Till:

Měl jste napsat, že do standardní distribude PHP bylo přidáno rozšíření Operator a s ním možnost přetížit takřka všechny operátory. To by bylo bohužel stejně vtipné :-(.

obluda:

rofl -)

jlx:

No malem jsem z toho omdlel... :-D Pak mi doslo co je za den :-D

Michalek:

Přiznávám to nerad, ale až do přečtení komentáře od Jana Tichého jsem to "žral i s navijákem". :)

WTH:

What the hell is going on here?

petík:

this article is only joke

ikona Jakub Hejda:

Připadá mi to nepraktické a nesystémové.
Podobně jako kdysi někdo přeložil Flash 5 do češtiny a současně s tím i ActionScript. To byl maglajs šílenej.

Tohle "vylepšení" se patrně prosadilo jen proto, aby někdo dokázal, že UTF nemá hranic...

paranoiq:

Připadá mi to nepraktické a nesystémové.
Podobně jako kdysi někdo přeložil vzorce v Excelu do češtiny.. :(

ikona Ondra:

Apríl na poslední den v roce...inu proč ne? Můj favorit je fce † ;))

ikona Dan:

Pěkný fór:-) Chvíli jsem ale nad tím nevěřícně kroutil hlavou, přiznávám:-)

ikona Mek:

LOOOOOL no toto bolo dost dobre :) ale nebolo by zle tam tieto operatory pridat a stare ponechat :)

ikona v6ak:

Jako sranda dobrý, ale přiznám se, že tyto znaky moc neumím psát. Určitě bych ponechal staré operátory a fce. Jinak †.

FJ:

No to si děláte p...l!!!
<?php
 
if ("→"=="->") {
      echo "..†..vybodnu se na programování a začnu pěstovat kedlubny...";
  }
?>
PS:
Není někde k podepsání protestní petice??

Inza:

No teda, Kubo...jsem další oběť...až po přečtení komentářů mi přestalo být mdlo. Tohle se povedlo!;-)

Tomik:

Podle mě se na
<?php
exit();
?>
spíš hodí
<?php
();
?>

:)

optik:

smrtka sedla, jak ulitá :-)))

marek:

případně nožičky za goto...  (nebo radši zrušit goto? :) )

optik:

goto = smrtka s nožičkami

bohdy:

To je skoro na trestni oznameni za sireni poplasne zpravy :D

Dundee:

Hezkej joke :) nastesti jsem se nenechal nachytat.

Peane:

Myslim ze v dalsim vydani PHP se muzeme tesit na <?php ♥(); , (); a ☀(); ?> ...unika mi smysl...

Ares:

Tohle je podle mě nesmysl... Při hodinách matematiky vždycky hrozně prskám, kolik možnejch a nemožnejch klikiháků se tam používá, oproti PHPku a teď to prosakuje i do něj....

ikona Marty:

1) Také nerozumím, proč by to mělo být k užitku (nějaké usnadnění pro nováčky v PHP?)
2) Docela by me zajímal názor pana Vrány, který se zdá, že taktně mlčí a svůj názor nechce zveřejnit :-)

Marty:

priste budu cist KOMPLETNE cely clanek.. *TIRED*

ikona Jenik:

Článek byl psán jako Silvestrovské povyražení a není tedy myšlen vážně. => :))))))))

Ladis:

$a==1 ☺ echo 'ok' ☻ echo 'error' ;

Ladis:

Oops, některé znaky nám to ve výpisu nezobrazuje. Pro dešifrování zkopírovat&vložit do textového pole.

paranoiq:

pěkný :)
sice jde o operátory a ne o proměnné, ale tvoje silvestrovské php se začíná nebezpečně podobat perlu :P

1okaty:

Teda sakra... az ma zalialo studenym potom... este ze je to len sranda... a este vacsia sranda je to.. ako si kazdy precita nadpis a to co je pod nim automaticky ignoruje... (aj ja)

msx:

Toto je fakt dobrý článok. Ja som to pochopil tak, že bude pridaná nová funkčnosť a keď som si na konci prečítal, že, pôvodná skončí, vtedy mi došlo. Ale po prečítaní prvých riadkov som už pozeral, že aký je dátum článku a 1. 4. to nebolo a tak som teda čítal ďalej.

Na druhú stranu, tento článok vnímam pozitívne, pretože som po mnohých rokoch programovania v PHP zistil aká je konštanta pre PI. Dodnes som bol v tom, že PI v PHP neexistuje. Pravda je, že som PI potreboval len raz aj to len pre vlastné účely, tak som si z toho ťažkú hlavu nerobil a negúglil som, aby som to zistil.
avatar © 2005-2020 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.