{"id":4438,"date":"2016-10-24T12:00:42","date_gmt":"2016-10-24T10:00:42","guid":{"rendered":"https:\/\/igloonet.cz\/blog\/?p=4438"},"modified":"2016-11-10T17:44:50","modified_gmt":"2016-11-10T15:44:50","slug":"ponorte-se-do-typescriptu-a-defenzivniho-php","status":"publish","type":"post","link":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/","title":{"rendered":"Pono\u0159te se do&nbsp;TypeScriptu a&nbsp;defenzivn\u00edho PHP"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Zat\u00edmco organizace <a href=\"https:\/\/www.webexpo.cz\/praha2016\/\">WebExpa 2016<\/a> si zaslou\u017e\u00ed palec dol\u016f, \u0159e\u010dn\u00edci a&nbsp;jejich p\u0159edn\u00e1\u0161ky byly velmi dobr\u00e9.&nbsp;Na dv\u011b nejlep\u0161\u00ed z&nbsp;nich se proto pod\u00edv\u00e1me detailn\u011bji. Pokud se neboj\u00edte superset\u016f v&nbsp;JavaScriptu nebo imutabiln\u00edch objekt\u016f v&nbsp;PHP, pokra\u010dujte ve&nbsp;\u010dten\u00ed!<\/p>\n<p><!--more--><\/p>\n<p>P\u0159ed za\u010d\u00e1tkem leto\u0161n\u00edho WebExpa jsme na&nbsp;<a href=\"https:\/\/igloonet.cz\/blog\/webexpo\/\">na\u0161em blogu<\/a> p\u0159ipomn\u011bli n\u011bkolik p\u0159edn\u00e1\u0161ek z&nbsp;lo\u0148sk\u00e9ho ro\u010dn\u00edku. M\u011bs\u00edc pot\u00e9 nastal ide\u00e1ln\u00ed \u010das zam\u011b\u0159it se i&nbsp;na&nbsp;rok 2016.&nbsp;Z&nbsp;t\u00e9m\u011b\u0159 v\u0161ech p\u0159edn\u00e1\u0161ek, na&nbsp;kter\u00fdch jsem letos byl, jsem si zapisoval pozn\u00e1mky. Zdaleka nejv\u00edce m\u011b ale zaujaly p\u0159edn\u00e1\u0161ky <a href=\"https:\/\/www.webexpo.cz\/praha2016\/prednaska\/javascript-java-typescript\/\"><em>Javascript + Java = Typescript<\/em><\/a> od&nbsp;<a href=\"https:\/\/pl.linkedin.com\/in\/tomasz-ducin-82234a4b\/cs\">Tomasze Ducina<\/a> a&nbsp;<a href=\"https:\/\/www.webexpo.cz\/praha2016\/prednaska\/extremely-defensive-php\/\"><em>Extremely Defensive PHP<\/em><\/a>&nbsp;od <a href=\"https:\/\/de.linkedin.com\/in\/ocramius\/cs\">Marca Pivetty<\/a>. Za\u010dn\u011bme proto t\u00edm p\u0159\u00edjemn\u011bj\u0161\u00edm a&nbsp;nevyda\u0159enou organizaci nechme a\u017e na&nbsp;z\u00e1v\u011br.<\/p>\n<h3>\u00davod do&nbsp;TypeScriptu<\/h3>\n<p>Tomasz&nbsp;uvedl svoj\u00ed skv\u011blou angli\u010dtinou poslucha\u010de do&nbsp;TypeScriptu, tedy do&nbsp;jak\u00e9hosi hybrida mezi statickou Javou a&nbsp;dynamick\u00fdm JavaScriptem, kter\u00fd si bere to nejlep\u0161\u00ed z&nbsp;obou sv\u011bt\u016f.<\/p>\n<blockquote class=\"twitter-tweet tw-align-center\" data-lang=\"en\">\n<p dir=\"ltr\" lang=\"en\" style=\"text-align: center;\">why should you care about TS? Come &amp;&nbsp;listen to <a href=\"https:\/\/twitter.com\/hashtag\/javascript?src=hash\">#javascript<\/a> + <a href=\"https:\/\/twitter.com\/hashtag\/java?src=hash\">#java<\/a> = <a href=\"https:\/\/twitter.com\/hashtag\/typescript?src=hash\">#typescript<\/a> at 14.00, Lucerna Cinema <a href=\"https:\/\/twitter.com\/hashtag\/webexpo?src=hash\">#webexpo<\/a> \ud83c\udf7b <a href=\"https:\/\/twitter.com\/hashtag\/Prague?src=hash\">#Prague<\/a> <a href=\"https:\/\/t.co\/oXg5AcOyc4\">pic.twitter.com\/oXg5AcOyc4<\/a><\/p>\n<p style=\"text-align: center;\">\u2014 the one &amp;&nbsp;only ducin (@tomasz_ducin) <a href=\"https:\/\/twitter.com\/tomasz_ducin\/status\/779266908994539520\">September 23,&nbsp;2016<\/a><\/p>\n<\/blockquote>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Typescript je supersetem JavaScriptu. Podobn\u011b jako dnes ji\u017e mrtv\u00fd CoffeeScript se toti\u017e p\u0159ekl\u00e1d\u00e1 do&nbsp;\u010dist\u00e9ho JavaScriptu. Z\u00e1rove\u0148 n\u00e1m nab\u00edz\u00ed to skv\u011bl\u00e9 z&nbsp;Javy: syst\u00e9m t\u0159\u00edd (t\u0159\u00eddy, rozhran\u00ed, moduly, generiky) a&nbsp;hl\u00edd\u00e1n\u00ed typ\u016f b\u011bhem kompilace k\u00f3du.&nbsp;To s&nbsp;sebou p\u0159in\u00e1\u0161\u00ed dal\u0161\u00ed v\u00fdhody, kdy se jako v\u00fdvoj\u00e1\u0159 nap\u0159\u00edklad m\u016f\u017eu spolehnout na&nbsp;to, \u017ee&nbsp;dan\u00e1 entita bude m\u00edt v\u017edycky jasn\u011b dan\u00fd datov\u00fd typ a&nbsp;nemus\u00edm se tak starat o&nbsp;jeho testov\u00e1n\u00ed.<\/p>\n<p>T\u00edm se ostatn\u011b bl\u00ed\u017e\u00edme k&nbsp;d\u016fvodu, pro\u010d Tomasz pou\u017e\u00edv\u00e1 Typescript. Nejde p\u0159itom pouze o&nbsp;samotn\u00fd syst\u00e9m t\u0159\u00edd, kter\u00fd najdeme v&nbsp;omezen\u011bj\u0161\u00ed podob\u011b i&nbsp;v&nbsp;nastupuj\u00edc\u00edm standardu ES6, nebo o&nbsp;p\u0159\u00edtomnost datov\u00fdch typ\u016f. Je to p\u0159edev\u0161\u00edm fakt, \u017ee&nbsp;d\u00edky neust\u00e1l\u00e9 kontrole, p\u0159i kompilaci i&nbsp;za b\u011bhu, <strong>m\u016f\u017ee odsunout \u010d\u00e1st sv\u00e9 zodpov\u011bdnosti na&nbsp;samotnou platformu<\/strong>, tedy TypeScript.<\/p>\n<p>Nezapomn\u011bl se ov\u0161em zodpov\u011bdn\u011b zm\u00ednit i&nbsp;o&nbsp;potenci\u00e1ln\u00edch probl\u00e9mech, kter\u00e9 p\u0159echod na&nbsp;TypeScript zahrnuje. Z&nbsp;m\u00e9ho pohledu se jedn\u00e1 zejm\u00e9na o&nbsp;mo\u017enou nekompatibilitu n\u011bkter\u00fdch JavaScriptov\u00fdch knihoven t\u0159et\u00edch stran, p\u0159esto\u017ee m\u00e1m pocit, \u017ee&nbsp;ty v\u011bt\u0161\u00ed knihovny ji\u017e d\u00e1vno s&nbsp;TypeScriptem po\u010d\u00edtaj\u00ed.<\/p>\n<p>Mezi nev\u00fdhodami \u010di potenci\u00e1ln\u00edmi probl\u00e9my mluvil Tomasz i&nbsp;o&nbsp;<strong>zodpov\u011bdnost<\/strong>i, kterou m\u00e1 ka\u017ed\u00fd z&nbsp;n\u00e1s, jestli\u017ee se rozhodneme \u201ep\u0159inutit\u201c kolegy k&nbsp;adopci t\u00e9to technologie v&nbsp;pr\u00e1ci. To se v\u0161ak podle m\u011b obecn\u011b t\u00fdk\u00e1 \u010dehokoliv nov\u00e9ho, ne konkr\u00e9tn\u011b pouze TypeScriptu.<\/p>\n<p>Tomasz p\u0159ibl\u00ed\u017eil pln\u00e9mu kinu Lucerna skv\u011ble vypadaj\u00edc\u00ed technologii, kter\u00e1 tu s&nbsp;n\u00e1mi sice ji\u017e n\u011bjak\u00fd ten p\u00e1tek je a&nbsp;bude ur\u010dit\u011b i&nbsp;nad\u00e1le, proto\u017ee se j\u00ed dost\u00e1v\u00e1 podpory z&nbsp;Microsoftu a&nbsp;Googlu, nicm\u00e9n\u011b a\u017e po tomto v\u00fdborn\u011b podan\u00e9m a&nbsp;ucelen\u00e9m \u00favodu m\u00e1m velkou chu\u0165 se pono\u0159it do&nbsp;sv\u011bta TypeScriptu a&nbsp;pokud mo\u017eno za\u010d\u00edt jej pou\u017e\u00edvat i&nbsp;na&nbsp;na\u0161ich klientsk\u00fdch projektech. Projd\u011bte si jeho prezentaci.<\/p>\n<p><iframe loading=\"lazy\" src=\"\/\/slides.com\/ducin\/javascript-plus-java-equals-typescript\/embed\" width=\"800\" height=\"600\" frameborder=\"0\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h3>PHP opatrn\u011b<\/h3>\n<p>Marco hned na&nbsp;za\u010d\u00e1tku sv\u00e9 p\u0159edn\u00e1\u0161ky ve&nbsp;velk\u00e9m s\u00e1le srazil h\u0159eb\u00ednky v\u0161em \u201emistr\u016fm sv\u011bta v&nbsp;PHP v\u00fdvoji\u201c. Nejprve padla oblig\u00e1tn\u00ed pozn\u00e1mka, \u017ee&nbsp;\u201ev\u0161ichni p\u00ed\u0161ou chybov\u00fd, \u0161patn\u00fd k\u00f3d\u201d, a&nbsp;n\u00e1sledovala dob\u0159e m\u00edn\u011bn\u00e1 rada, a\u0165 pozn\u00e1me sv\u00e9 limity. Ale co ti, kte\u0159\u00ed sv\u00e9 limity zn\u00e1t necht\u011bj\u00ed? Jsou podle n\u011bj nejhloup\u011bj\u0161\u00ed ze&nbsp;v\u0161ech.<\/p>\n<blockquote class=\"twitter-tweet tw-align-center\" data-lang=\"en\">\n<p dir=\"ltr\" lang=\"en\" style=\"text-align: center;\">Thanks to everyone that listened to my <a href=\"https:\/\/twitter.com\/hashtag\/webexpo2016?src=hash\">#webexpo2016<\/a> talk! You can find the slides at <a href=\"https:\/\/t.co\/Mwl9M3Vcsy\">https:\/\/t.co\/Mwl9M3Vcsy<\/a> <a href=\"https:\/\/twitter.com\/hashtag\/webexpo?src=hash\">#webexpo<\/a> <a href=\"https:\/\/twitter.com\/hashtag\/php?src=hash\">#php<\/a> <a href=\"https:\/\/twitter.com\/webexpo\">@webexpo<\/a><\/p>\n<p style=\"text-align: center;\">\u2014 Creepy Reviewer (@Ocramius) <a href=\"https:\/\/twitter.com\/Ocramius\/status\/779658346974605313\">September 24,&nbsp;2016<\/a><\/p>\n<\/blockquote>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Pot\u00e9 za\u010dal Marco proch\u00e1zet n\u011bkolik dobr\u00fdch postup\u016f a&nbsp;pat\u0159i\u010dn\u011b je tak\u00e9 od\u016fvodnil. Nap\u0159\u00edklad jak je d\u016fle\u017eit\u00e9 ps\u00e1t k\u00f3d tak, aby \u0161el pou\u017e\u00edt pr\u00e1v\u011b a&nbsp;pouze jedn\u00edm zp\u016fsobem. Zde pou\u017eil hezk\u00e9 p\u0159irovn\u00e1n\u00ed ke&nbsp;koncovk\u00e1m RJ45 versus USB. Dal\u0161\u00ed Marcovy my\u0161lenky p\u0159edstav\u00edm v&nbsp;bodech, proto\u017ee ka\u017ed\u00e9 jeho sd\u011blen\u00ed bylo stru\u010dn\u00e9 a&nbsp;p\u0159\u00edmo k&nbsp;v\u011bci:<\/p>\n<ul>\n<li>V praxi se ned\u00e1 napsat dobr\u00fd, znovupou\u017eiteln\u00fd k\u00f3d.<\/li>\n<li>K\u00f3d mus\u00ed \u0159e\u0161it pouze a&nbsp;jenom n\u00e1\u0161 probl\u00e9m, ne \u201ev\u0161echny probl\u00e9my sv\u011bta\u201c.<\/li>\n<li>Je d\u016fle\u017eit\u00e9 udr\u017eovat imutabiln\u00ed stav kv\u016fli konzistenci dat i&nbsp;v\u00fdkonnosti.<\/li>\n<li>Konstruktor je jedin\u00e9 m\u00edsto ur\u010den\u00e9 k&nbsp;nastavov\u00e1n\u00ed vlastnost\u00ed objektu. Settery jsou bezv\u00fdznamn\u00e9 \u201ep\u0159esouva\u010de dat\u201c.<\/li>\n<li>Vytvo\u0159en\u00edm pr\u00e1zdn\u00fdch t\u0159\u00edd, respektive rozhran\u00ed se m\u016f\u017eeme zbavit spousty podm\u00ednek v&nbsp;k\u00f3du a&nbsp;p\u0159itom nevytvo\u0159it logickou d\u00edru, kdybychom nap\u0159\u00edklad cht\u011bli logovat zpr\u00e1vy neexistuj\u00edc\u00edm loggerem.<\/li>\n<li>Tento p\u0159\u00edklad Marco p\u0159\u00edmo uk\u00e1zal a&nbsp;p\u0159\u00edpadn\u00fd nep\u0159edan\u00fd Logger v&nbsp;konstruktoru rovnou nahradil FakeLoggerem.<\/li>\n<li>Ve\u0161ker\u00e9 p\u0159edan\u00e9 objekty si metoda mus\u00ed bu\u010f klonovat, nebo p\u0159ij\u00edmat u\u017e imutabiln\u00ed.<\/li>\n<li>Value objects vhodn\u011b zapouzd\u0159uj\u00ed stavy hodnot.<\/li>\n<li>Pokud je logika metody takov\u00e1, \u017ee&nbsp;by mohla vracet r\u016fzn\u00e9 typy hodnot, je nejlep\u0161\u00edm \u0159e\u0161en\u00edm vracet pr\u00e1v\u011b value object.<\/li>\n<li>Ka\u017ed\u00e1 t\u0159\u00edda by m\u011bla b\u00fdt deklarov\u00e1na jako fin\u00e1ln\u00ed, pokud k&nbsp;opaku nem\u00e1me opravdu p\u00e1dn\u00fd d\u016fvod. P\u0159\u00edpadn\u00e9 pod\u011bd\u011bn\u00ed, nebo roz\u0161\u00ed\u0159en\u00ed u\u017e je jin\u00fd use-case a&nbsp;net\u00fdk\u00e1 se na\u0161eho aktu\u00e1ln\u00edho probl\u00e9mu.<\/li>\n<\/ul>\n<p>Naprost\u00e1 v\u011bt\u0161ina bod\u016f, kter\u00e9 za p\u0159edn\u00e1\u0161ku Marco stihnul uk\u00e1zat, mi p\u0159i\u0161la skv\u011bl\u00e1 a&nbsp;relevantn\u00ed. Bohu\u017eel mu nezbyl \u010das na&nbsp;\u00fapln\u011b v\u0161echny. Tak jako Tomasz vnesl nov\u00fd sm\u011br do&nbsp;m\u00e9ho uva\u017eov\u00e1n\u00ed nad psan\u00edm JavaScriptu, poda\u0159ilo se n\u011bco velmi podobn\u00e9ho i&nbsp;Marcovi v&nbsp;PHP. D\u00edky za&nbsp;to.<\/p>\n<h3>Krok zp\u011bt<\/h3>\n<p>S <a href=\"https:\/\/igloonet.cz\/vyvoj\/tym\">kolegy<\/a> jsme se shodli, \u017ee&nbsp;p\u0159esun cel\u00e9 konference do&nbsp;Lucerny byla chyba. Hned s&nbsp;prvn\u00edmi p\u00e1te\u010dn\u00edmi p\u0159edn\u00e1\u0161kami vy\u0161lo najevo, jak moc velk\u00fd nedostatek to je. Pokud jsme n\u011bco cht\u011bli m\u00edt z&nbsp;p\u0159edn\u00e1\u0161ky ve&nbsp;velk\u00e9m s\u00e1le, bylo nezbytn\u00e9 sed\u011bt vp\u0159edu a&nbsp;ide\u00e1ln\u011b na&nbsp;stran\u011b p\u0159ed reproduktorem. S&nbsp;ka\u017ed\u00fdm posunem o&nbsp;\u0159adu vzad nar\u016fstal hluk jak od&nbsp;partnersk\u00fdch st\u00e1nk\u016f a&nbsp;ob\u010derstven\u00ed, tak od&nbsp;\u201erelaxa\u010dn\u00edch\u201c stol\u016f v&nbsp;prvn\u00edm pat\u0159e velk\u00e9ho s\u00e1lu. Nejv\u011bt\u0161\u00ed <a href=\"http:\/\/igloonet.cz\/honzag\">g\u00f3l<\/a> pak byl fotb\u00e1lek ve&nbsp;druh\u00e9m pat\u0159e, kter\u00fd se mnoz\u00ed ne\u0161t\u00edtili hr\u00e1t ani b\u011bhem p\u0159edn\u00e1\u0161ek.<\/p>\n<p>Po oba dny jsme bojovali s&nbsp;um\u00edst\u011bn\u00edm p\u0159edn\u00e1\u0161ek. Ne snad \u017ee&nbsp;by t\u0159i prostory v&nbsp;Lucern\u011b nevyhovovaly, ale na&nbsp;nejednu v\u00fdvoj\u00e1\u0159skou p\u0159edn\u00e1\u0161ku se do&nbsp;nejmen\u0161\u00edho Lucerna Music Baru narvaly i&nbsp;\u010dty\u0159i stovky lid\u00ed. Naproti tomu jsem vid\u011bl obsazen\u00fdch jen n\u011bkolik \u0159ad ve&nbsp;velk\u00e9m s\u00e1lu s&nbsp;mnohem v\u011bt\u0161\u00ed kapacitou.<\/p>\n<p>Letos jsem v&nbsp;byl v&nbsp;kin\u011b jen asi na&nbsp;p\u011bti, \u0161esti p\u0159edn\u00e1\u0161k\u00e1ch a&nbsp;na\u0161t\u011bst\u00ed jsem nepoc\u00edtil (na&nbsp;rozd\u00edl od&nbsp;ostatn\u00edch) probl\u00e9my s&nbsp;nedostate\u010dn\u00fdm v\u011btr\u00e1n\u00edm. Co m\u011b v\u0161ak v&nbsp;prvn\u00ed den p\u0159edn\u00e1\u0161ek vyt\u00e1\u010delo, bylo chov\u00e1n\u00ed n\u00e1v\u0161t\u011bvn\u00edk\u016f po jejich sko\u010den\u00ed. S&nbsp;otev\u0159en\u00edm dve\u0159\u00ed se do&nbsp;s\u00e1lu nahrnuli lid\u00e9 dycht\u00edc\u00ed po m\u00edst\u011b, p\u0159itom v\u0161ak nebrali ohled na&nbsp;ty odch\u00e1zej\u00edc\u00ed.<\/p>\n<p>Velmi pozitivn\u011b ale hodnot\u00edm, jak organiz\u00e1to\u0159i na&nbsp;tyto probl\u00e9my druh\u00fd den zareagovali. Za\u010dali do&nbsp;kina vpou\u0161t\u011bt a\u017e v&nbsp;moment\u011b, kdy byli v\u0161ichni, co cht\u011bli odej\u00edt, venku. Mnohem rad\u011bji jsem si vyst\u00e1l kontrolovanou frontu p\u0159ed kinem, ne\u017e b\u00fdt cht\u011b necht\u011b sou\u010d\u00e1st\u00ed davu tla\u010d\u00edc\u00edho se chaoticky do&nbsp;je\u0161t\u011b pln\u00e9ho s\u00e1lu.<\/p>\n<blockquote class=\"twitter-tweet tw-align-center\" data-lang=\"en\">\n<p dir=\"ltr\" lang=\"cs\">Mil\u00e9 <a href=\"https:\/\/twitter.com\/webexpo\">@webexpo<\/a>, a\u017e na&nbsp;zn\u00e1m\u00fd probl\u00e9m s&nbsp;hlukem ve&nbsp;velk\u00e9m s\u00e1le jsem si leto\u0161n\u00ed <a href=\"https:\/\/twitter.com\/hashtag\/webexpo?src=hash\">#webexpo<\/a> fakt u\u017eil, tak\u017ee d\u00edky a&nbsp;za rok&nbsp;\u010dau&nbsp;\ud83d\ude09<\/p>\n<p>\u2014 BoB Marvan (@BoBMarvan) <a href=\"https:\/\/twitter.com\/BoBMarvan\/status\/779997223400706048\">September 25,&nbsp;2016<\/a><\/p><\/blockquote>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Jakkoliv to z&nbsp;posledn\u00edch odstavc\u016f m\u016f\u017ee vyzn\u00edvat negativn\u011b, leto\u0161n\u00ed WebExpo rozhodn\u011b nebylo \u0161patn\u00e9.&nbsp;Co se t\u00fd\u010de obsahu, bylo dokonce velmi dobr\u00e9. Nakonec jsme odj\u00ed\u017ed\u011bli nad\u0161en\u00ed t\u00e9m\u011b\u0159 stejn\u011b jako loni a&nbsp;u\u017e te\u010f se t\u011b\u0161\u00edme na&nbsp;WebExpo 2017. P\u0159\u00ed\u0161t\u011b snad ji\u017e bez zvuku&nbsp;oslav vst\u0159elen\u00e9ho g\u00f3lu ve&nbsp;fotb\u00e1lku.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zat\u00edmco organizace WebExpa 2016&nbsp;si zaslou\u017e\u00ed palec dol\u016f, \u0159e\u010dn\u00edci a&nbsp;jejich p\u0159edn\u00e1\u0161ky byly velmi dobr\u00e9.&nbsp;Na&nbsp;dv\u011b nejlep\u0161\u00ed z&nbsp;nich se proto pod\u00edv\u00e1me detailn\u011bji. Pokud se neboj\u00edte superset\u016f v&nbsp;JavaScriptu nebo imutabiln\u00edch objekt\u016f v&nbsp;PHP, pokra\u010dujte ve&nbsp;\u010dten\u00ed!<\/p>\n","protected":false},"author":32,"featured_media":4455,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"wp_typography_post_enhancements_disabled":false,"footnotes":""},"categories":[71],"tags":[180,4,167],"class_list":["post-4438","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vyvoj","tag-javascript","tag-php","tag-webexpo"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Pono\u0159te se do TypeScriptu a defenzivn\u00edho PHP | igloonet blog<\/title>\n<meta name=\"description\" content=\"Zat\u00edmco organizace WebExpa si zaslou\u017e\u00ed palec dol\u016f, p\u0159edn\u00e1\u0161ky byly top. Pokud se neboj\u00edte superset\u016f v JavaScriptu nebo imutabiln\u00edch objekt\u016f v PHP, \u010dt\u011bte d\u00e1l!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/\" \/>\n<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pono\u0159te se do TypeScriptu a defenzivn\u00edho PHP\" \/>\n<meta property=\"og:description\" content=\"Zat\u00edmco organizace WebExpa si zaslou\u017e\u00ed palec dol\u016f, p\u0159edn\u00e1\u0161ky byly top. Pokud se neboj\u00edte superset\u016f v JavaScriptu nebo imutabiln\u00edch objekt\u016f v PHP, \u010dt\u011bte d\u00e1l!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/\" \/>\n<meta property=\"og:site_name\" content=\"igloonet blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/igloonet\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/michalgritzbach\" \/>\n<meta property=\"article:published_time\" content=\"2016-10-24T10:00:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-11-10T15:44:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2016\/10\/Blog-FB-Webexpo-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Michal Gritzbach\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Pono\u0159te se do TypeScriptu a defenzivn\u00edho PHP\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2016\/10\/Blog-TW-WebeExpo-2.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@michalgritzbach\" \/>\n<meta name=\"twitter:site\" content=\"@igloonet\" \/>\n<meta name=\"twitter:label1\" content=\"Napsal(a)\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michal Gritzbach\" \/>\n\t<meta name=\"twitter:label2\" content=\"Odhadovan\u00e1 doba \u010dten\u00ed\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/\"},\"author\":{\"name\":\"Michal Gritzbach\",\"@id\":\"https:\/\/igloonet.cz\/blog\/#\/schema\/person\/b5b8f35a8f6d38399c97b9cff436edc9\"},\"headline\":\"Pono\u0159te se do&nbsp;TypeScriptu a&nbsp;defenzivn\u00edho PHP\",\"datePublished\":\"2016-10-24T10:00:42+00:00\",\"dateModified\":\"2016-11-10T15:44:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/\"},\"wordCount\":1514,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2016\/10\/Blog-FB-Webexpo-2.jpg\",\"keywords\":[\"JavaScript\",\"PHP\",\"WebExpo\"],\"articleSection\":[\"V\u00fdvoj\"],\"inLanguage\":\"cs\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/\",\"url\":\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/\",\"name\":\"Pono\u0159te se do TypeScriptu a defenzivn\u00edho PHP | igloonet blog\",\"isPartOf\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2016\/10\/Blog-FB-Webexpo-2.jpg\",\"datePublished\":\"2016-10-24T10:00:42+00:00\",\"dateModified\":\"2016-11-10T15:44:50+00:00\",\"description\":\"Zat\u00edmco organizace WebExpa si zaslou\u017e\u00ed palec dol\u016f, p\u0159edn\u00e1\u0161ky byly top. Pokud se neboj\u00edte superset\u016f v JavaScriptu nebo imutabiln\u00edch objekt\u016f v PHP, \u010dt\u011bte d\u00e1l!\",\"breadcrumb\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#breadcrumb\"},\"inLanguage\":\"cs\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"cs\",\"@id\":\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#primaryimage\",\"url\":\"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2016\/10\/Blog-FB-Webexpo-2.jpg\",\"contentUrl\":\"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2016\/10\/Blog-FB-Webexpo-2.jpg\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"V\u00fdvoj\",\"item\":\"https:\/\/igloonet.cz\/blog\/rubriky\/vyvoj\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pono\u0159te se do&nbsp;TypeScriptu a&nbsp;defenzivn\u00edho PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/igloonet.cz\/blog\/#website\",\"url\":\"https:\/\/igloonet.cz\/blog\/\",\"name\":\"igloonet blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/igloonet.cz\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"cs\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/igloonet.cz\/blog\/#organization\",\"name\":\"igloonet\",\"url\":\"https:\/\/igloonet.cz\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"cs\",\"@id\":\"https:\/\/igloonet.cz\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2015\/07\/RGB_LVPC_igloonet.png\",\"contentUrl\":\"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2015\/07\/RGB_LVPC_igloonet.png\",\"width\":650,\"height\":465,\"caption\":\"igloonet\"},\"image\":{\"@id\":\"https:\/\/igloonet.cz\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/igloonet\",\"https:\/\/x.com\/igloonet\",\"https:\/\/instagram.com\/igloonet\/\",\"https:\/\/www.linkedin.com\/company\/igloonet\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/igloonet.cz\/blog\/#\/schema\/person\/b5b8f35a8f6d38399c97b9cff436edc9\",\"name\":\"Michal Gritzbach\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"cs\",\"@id\":\"https:\/\/igloonet.cz\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a2bc0bf485aac03b6bdc89f9d97e06aa8732dbbe6129372624620b9b07fe73da?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a2bc0bf485aac03b6bdc89f9d97e06aa8732dbbe6129372624620b9b07fe73da?s=96&d=retro&r=g\",\"caption\":\"Michal Gritzbach\"},\"description\":\"Krom\u011b programov\u00e1n\u00ed se v\u011bnuji i kybernetick\u00e9 bezpe\u010dnosti. M\u00e1m r\u00e1d psy a nesn\u00e1\u0161\u00edm Mat\u011bj\u016fv humor.\",\"sameAs\":[\"https:\/\/igloonet.cz\/michal\",\"https:\/\/www.facebook.com\/michalgritzbach\",\"https:\/\/x.com\/michalgritzbach\"],\"url\":\"https:\/\/igloonet.cz\/blog\/author\/michal\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pono\u0159te se do TypeScriptu a defenzivn\u00edho PHP | igloonet blog","description":"Zat\u00edmco organizace WebExpa si zaslou\u017e\u00ed palec dol\u016f, p\u0159edn\u00e1\u0161ky byly top. Pokud se neboj\u00edte superset\u016f v JavaScriptu nebo imutabiln\u00edch objekt\u016f v PHP, \u010dt\u011bte d\u00e1l!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/","og_locale":"cs_CZ","og_type":"article","og_title":"Pono\u0159te se do TypeScriptu a defenzivn\u00edho PHP","og_description":"Zat\u00edmco organizace WebExpa si zaslou\u017e\u00ed palec dol\u016f, p\u0159edn\u00e1\u0161ky byly top. Pokud se neboj\u00edte superset\u016f v JavaScriptu nebo imutabiln\u00edch objekt\u016f v PHP, \u010dt\u011bte d\u00e1l!","og_url":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/","og_site_name":"igloonet blog","article_publisher":"https:\/\/www.facebook.com\/igloonet","article_author":"https:\/\/www.facebook.com\/michalgritzbach","article_published_time":"2016-10-24T10:00:42+00:00","article_modified_time":"2016-11-10T15:44:50+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2016\/10\/Blog-FB-Webexpo-2.jpg","type":"image\/jpeg"}],"author":"Michal Gritzbach","twitter_card":"summary_large_image","twitter_title":"Pono\u0159te se do TypeScriptu a defenzivn\u00edho PHP","twitter_image":"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2016\/10\/Blog-TW-WebeExpo-2.jpg","twitter_creator":"@michalgritzbach","twitter_site":"@igloonet","twitter_misc":{"Napsal(a)":"Michal Gritzbach","Odhadovan\u00e1 doba \u010dten\u00ed":"8 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#article","isPartOf":{"@id":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/"},"author":{"name":"Michal Gritzbach","@id":"https:\/\/igloonet.cz\/blog\/#\/schema\/person\/b5b8f35a8f6d38399c97b9cff436edc9"},"headline":"Pono\u0159te se do&nbsp;TypeScriptu a&nbsp;defenzivn\u00edho PHP","datePublished":"2016-10-24T10:00:42+00:00","dateModified":"2016-11-10T15:44:50+00:00","mainEntityOfPage":{"@id":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/"},"wordCount":1514,"commentCount":2,"publisher":{"@id":"https:\/\/igloonet.cz\/blog\/#organization"},"image":{"@id":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#primaryimage"},"thumbnailUrl":"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2016\/10\/Blog-FB-Webexpo-2.jpg","keywords":["JavaScript","PHP","WebExpo"],"articleSection":["V\u00fdvoj"],"inLanguage":"cs","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/","url":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/","name":"Pono\u0159te se do TypeScriptu a defenzivn\u00edho PHP | igloonet blog","isPartOf":{"@id":"https:\/\/igloonet.cz\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#primaryimage"},"image":{"@id":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#primaryimage"},"thumbnailUrl":"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2016\/10\/Blog-FB-Webexpo-2.jpg","datePublished":"2016-10-24T10:00:42+00:00","dateModified":"2016-11-10T15:44:50+00:00","description":"Zat\u00edmco organizace WebExpa si zaslou\u017e\u00ed palec dol\u016f, p\u0159edn\u00e1\u0161ky byly top. Pokud se neboj\u00edte superset\u016f v JavaScriptu nebo imutabiln\u00edch objekt\u016f v PHP, \u010dt\u011bte d\u00e1l!","breadcrumb":{"@id":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#breadcrumb"},"inLanguage":"cs","potentialAction":[{"@type":"ReadAction","target":["https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/"]}]},{"@type":"ImageObject","inLanguage":"cs","@id":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#primaryimage","url":"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2016\/10\/Blog-FB-Webexpo-2.jpg","contentUrl":"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2016\/10\/Blog-FB-Webexpo-2.jpg","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/igloonet.cz\/blog\/ponorte-se-do-typescriptu-a-defenzivniho-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"V\u00fdvoj","item":"https:\/\/igloonet.cz\/blog\/rubriky\/vyvoj\/"},{"@type":"ListItem","position":2,"name":"Pono\u0159te se do&nbsp;TypeScriptu a&nbsp;defenzivn\u00edho PHP"}]},{"@type":"WebSite","@id":"https:\/\/igloonet.cz\/blog\/#website","url":"https:\/\/igloonet.cz\/blog\/","name":"igloonet blog","description":"","publisher":{"@id":"https:\/\/igloonet.cz\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/igloonet.cz\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"cs"},{"@type":"Organization","@id":"https:\/\/igloonet.cz\/blog\/#organization","name":"igloonet","url":"https:\/\/igloonet.cz\/blog\/","logo":{"@type":"ImageObject","inLanguage":"cs","@id":"https:\/\/igloonet.cz\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2015\/07\/RGB_LVPC_igloonet.png","contentUrl":"https:\/\/igloonet.cz\/blog\/wp-content\/uploads\/2015\/07\/RGB_LVPC_igloonet.png","width":650,"height":465,"caption":"igloonet"},"image":{"@id":"https:\/\/igloonet.cz\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/igloonet","https:\/\/x.com\/igloonet","https:\/\/instagram.com\/igloonet\/","https:\/\/www.linkedin.com\/company\/igloonet"]},{"@type":"Person","@id":"https:\/\/igloonet.cz\/blog\/#\/schema\/person\/b5b8f35a8f6d38399c97b9cff436edc9","name":"Michal Gritzbach","image":{"@type":"ImageObject","inLanguage":"cs","@id":"https:\/\/igloonet.cz\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a2bc0bf485aac03b6bdc89f9d97e06aa8732dbbe6129372624620b9b07fe73da?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a2bc0bf485aac03b6bdc89f9d97e06aa8732dbbe6129372624620b9b07fe73da?s=96&d=retro&r=g","caption":"Michal Gritzbach"},"description":"Krom\u011b programov\u00e1n\u00ed se v\u011bnuji i kybernetick\u00e9 bezpe\u010dnosti. M\u00e1m r\u00e1d psy a nesn\u00e1\u0161\u00edm Mat\u011bj\u016fv humor.","sameAs":["https:\/\/igloonet.cz\/michal","https:\/\/www.facebook.com\/michalgritzbach","https:\/\/x.com\/michalgritzbach"],"url":"https:\/\/igloonet.cz\/blog\/author\/michal\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/posts\/4438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/comments?post=4438"}],"version-history":[{"count":24,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/posts\/4438\/revisions"}],"predecessor-version":[{"id":4470,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/posts\/4438\/revisions\/4470"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/media\/4455"}],"wp:attachment":[{"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/media?parent=4438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/categories?post=4438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/igloonet.cz\/blog\/wp-json\/wp\/v2\/tags?post=4438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}