« 1 2 3 4 5 »
Autor Zpráva
Joker
Profil
Toto vlákno slouží k organizaci struktury a tvorby obsahu připravované učebnice PHP.

Máte-li návrh na doplnění/vylepšení struktury, pište sem do vlákna.
Chcete-li na nějakém tématu pracovat, taky pište sem do vlákna.

Pro potenciální autory:
Než se přihlásíte o nějaké téma, zamyslete se. Psát učebnici není zas tak jednoduché. Zvažte, jestli splňujete následující:
0a. Jako samozřejmost předpokládám, že máte slušné znalosti PHP a zkušenost s realizací minimálně několika netriviálních projektů.
0b. Přečetli/absolvovali jste více než jeden výukový kurz PHP a ty informace pochopili.
1. Uvědomujete si, že jen splnit bod 0. je pořád nedostatečné. Musíte mít ambici a schopnosti napsat text lepší než to, co jste četli.
2. Kromě slušných odborných znalostí máte i zkušenosti s výukou ostatních. Ideálně profesionálně učíte PHP, ale stačí i zkušenosti s výukou něčeho jiného; třeba doučování, řešení problémů na zdejší diskusi a podobně. Sami jste už vytvořili nebo se podíleli na tvorbě nějakého výukového materiálu pro ostatní.
3. Text který vytvoříte bude spisovně česky a bez stylistických a pravopisných chyb, resp. s tolerovatelným množstvím chyb.

Ve zkratce: Umíte předávat vědomosti ostatním a dokážete napsat článek, který bude na výši jak odborně, tak jazykově.
Joker
Profil
Návrh struktury
Rozpracovanost tématu je označena:
volné - O téma se zatím nikdo nepřihlásil
Jméno - O téma se přihlásil uživatel Jméno, ale zatím na něm nezačal pracovat. V případě zájmu se zkuste s dotyčným domluvit na přenechání tématu.
Jméno - O téma se přihlásil uživatel Jméno a má ho rozpracované
Jméno - Téma už je napsané uživatelem Jméno

Zabírejte si jen takové množství témat, jaké zvládnete v přiměřeném čase napsat!
Na druhé straně některá témata spolu souvisí natolik, že by je asi měl dělat jeden člověk. Pak si buď zaberte všechny, nebo se s autory těch souvisejících domluvte na spolupráci.

Poznámka: Jedna odrážka nemusí být jeden článek, můžete ji rozdělit i na dva-tři. U některých odrážek se s tím víceméně počítá.

Základní kurz
Úplné základy pro někoho, kdo PHP neviděl.
- Joker - Úvod, jak funguje PHP
- Joker - Než začnete programovat Zřízení serveru, volba editoru atp.
- Joker - Stručný návod na instalaci webserveru (mimo hlavní posloupnost kapitol, bude na něj odkazovat zřízení serveru)
- Joker - Doporučené nastavení editoru
- Joker - Základy syntaxe (včetně vypisování kódu a include, takže asi na víc částí)
- Joker - Řešení chyb v kódu Co znamenají chybové hlášky a jak je použít k nalezení chyby
- Joker - Proměnné, datové typy
- Joker - Přetypování
- Again - Operátory
- Someone Joker - Pole
- Joker - Podmínky (+ switch)
- Someone Joker - Cykly
- Joker - Funkce
- Joker - (doplněno) Rozsah platnosti proměnných, lokální a globální proměnné
- volné - Superglobální proměnné
- Joker - Formuláře, odesílání dat z klienta
- Radek9 Joker - Kombinování PHP s Javascriptem Zopakovat, že to není jen tak. Jak něco předat z PHP do JS, jak něco předat z JS do PHP

Programujeme v PHP
Pro ty, kdo už ovládají základy syntaxe. Strukturou a pořadím témat si úplně jistý nejsem.
- Darker - Práce s řetězci
- volné - Konstanty
- volné - Práce s poli
- volné - Odesílání e-mailů
- Alphard - Práce se soubory
- volné - Upload souborů
- volné - Databáze
- volné - Cookies
- Alphard - Sessions
- volné - Regulární výrazy
- volné - HTTP hlavičky
- volné - Zobrazování jiného obsahu než HTML
- volné - Generování XML
- volné - Generování PDF
- volné - Práce s obrázky
- volné - Uživatelské chyby, výjimky
- volné - Jmenné prostory
- volné - Anonymní funkce
- volné - Callbacks


Základy databází
- volné - Databáze vs. soubory
- volné - SQL: Vytváření tabulek
- volné - SQL: Výběr dat
- volné - SQL: Vkládání a aktualizace dat
- volné - Návrh databáze
- volné - Časté chyby při návrhu databáze

Objektově-orientované programování a objektově-orientovaný návrh aplikace
- Joker - Co jsou objekty a třídy
- volné - Rozdíl mezi třídou a instancí
- volné - Organizace kódu, autoloading
- volné - Vlastnosti, jejich viditelnost. Zapouzdření
- volné - Konstruktor, destruktor, magické metody (magic methods)
- volné - Vlastnosti instance vs. vlastnosti třídy (statické)
- volné - Vztahy mezi třídami: Skládání, dědičnost, přetěžování (asi na víc částí) Nezapomenout záludnosti ve volání děděné/původní metody a „pámajim nekudotajim“ (operátor rozlišení kontextu)
- volné - Abstraktní třídy
- volné - Rozhraní
- volné - Iterátory
- volné - traits
- volné - Serializace objektů
- volné - Reflexe
- Joker - Základní principy objektově-orientovaného návrhu, SOLID Sem by patřilo i jak předávat data mezi třídami, používání výjimek atd.
- volné - SPL
- volné - Architektura MVC

Ukázkové příklady
Co dáme dohromady, odpíchul bych se od zdejší FAQ.

Instalace a nastavení serveru
Mělo by asi obsahovat postupy pro Apache a IIS
- volné - Začínáme, jak nainstalovat PHP
- volné - Možnosti nastavení PHP php.ini, .htaccess apod.
- volné - Jak nastavit ukládání chyb Kam ukládat chyby na testovacím/ostrém webu a jak to udělat
- volné - Řešení problémů se serverem Kde hledat logy, atd.
- volné - Chybové stránky
- volné - Přesměrování, omezení přístupu, zaheslování
- volné - Nastavení subdomény
Seznam změn (oproti verzi při založení tohoto vlákna, která se trochu liší od minulého vlákna):
Ad [#5], přidal jsem přetypování proměnných a konstanty.
Ad [#22], doplněno
21. 6. 2012 - Oddělil jsem zvlášť článek o doporučeném nastavení editoru, přišlo mi užitečné ho mít samostatně.
22. 6. 2012 - Přesunul jsem pole před podmínky a cykly.
12. 7. 2012 - Přidal jsem návod na instalaci webserveru
koudelacek
Profil *
Hodil by se tam i překlad PHP.net..
panther
Profil
koudelacek:
učebnice, která nově vzniká, nemá s PHP.net nic společného. Ani není jejím cílem PHP manuál kopírovat nebo překládat. Pokud to myslíš s programováním vážně, angličtině se dříve či později stejně nevyhneš. I když jí nemluvíš plynně, z příkladů mnohé pochytíš.
Jan Tvrdík
Profil
Joker:
Pořád chybí ta témata, která zmiňuje Majkl578:
• přetypování proměnných (explicitní i implicitní)
• konstanty
Joker
Profil
Jan Tvrdík:
Ajaj, datové typy, no jasně! Asi jsem měl za to, že to bude u proměnných, ale určitě patří mezi proměnné a operátory.
Konstanty dám do pokročilejší části.
Again
Profil
Joker:
S datovými typy jsem už automaticky počítal u proměnných, jedná se o jejich důležitou součást. Už jsem totiž narazil na začátečníky, kteří byli schopni operátorem identity porovnávat datový typ string a integer, a pak se divili, proč jim podmínka nefunguje. Kromě toho se často vyskytují čísla v uvozovkách a podobné nešvary.

U minulého vlákna jsem doplňoval nějaké témata k podkapitole "Základy databází ". I když se možná jedná o pokročilejší věci u databází, bylo by vhodné alespoň nějaké základy uvést. Mám zejména na mysli spojování tabulek, kdy neustále dokola vidím spojení pomocí několika cyklů v PHP. Takže bych osobně ještě doplnil následující kapitoly:

- Srovnání databázových serverů (Alespoň zmínit ostatní databáze, ať uživatel nenabývá dojmu, že existuje pouze a jedině MySQL.)
- SQL: Odstraňování dat (možno doplnit pouze do tématu "vkládání, aktualizace dat")
- SQL: Spojení více tabulek

Samozřejmě můžeme nalézt dalších milión témat o databázích, avšak myslím si, že to není primárním úkolem tohoto seriálu.

Poslední zmínku bych měl k samotným článkům - taktéž jsem v minulém vlákně měl návrh ohledně "shrnutí probraného učiva". Autor dané kapitoly by vždy na konci vymyslel nějaký úkol (možno i otázky), přičemž návštěvník by si mohl daný úkol vyřešit a správné řešení by nalezl pod nějakým tlačítkem (jednoduchá implementace pomocí JS). Myslím si, že by to hodně prospělo (zejména pak otázky) při zapamatování daného učiva.
Radek9
Profil
Joker:
Pokud by to bylo možné, rád bych se ujal tématu Kombinování PHP s Javascriptem. Pro případné rejpaly dodám, že je mi 16 let, ale PHP se věnuji zhruba 3,5 roku a JavaScriptu asi 3 roky. Studuji také na IT škole, takže mám k tomuto oboru blízko a mohu se mu věnovat. Moje schopnosti myslím můžete zhodnotit z mých komentářů zde na diskusi.
Someone
Profil
Mám rozpracovaná témata Pole a Cykly, takže bych poprosil o žlutou barvičku na mé jméno :-)
Amunak
Profil
Joker:
Je nějaký důvod dávat konstanty do pokročilejší části? Myslím že mají svůj význama nejsou příliš složité k pochopení. Mohly by být klidně po boku proměnných. Určitě by se hodilo zmínit, že existují taky třeba předdefinované konstanty jako PHP_EOL nebo DIRECTORY_SEPARATOR. Už jsem párkrát viděl kód který nejprve detekoval OS a podle toho si pak definoval globální proměnnou s lomítkem dopředu nebo dozadu jen proto, že autor neměl ani páru o nějakých konstantách. A při práci s formuláři na něco podobného nejspíš nováčci narazí.
Str4wberry
Profil
Složité nejsou, ale pro začátečníka to, myslím, není podstatná informace. Je otázka, jak ten základní výukový kurs pojmout. Jestli tam mít jen podstatné minimum, třeba u podmínek zatajit switch, u cyklů zase while a do-while – mít je jako „nepovinné“. Nebo tam mít vše do detailů či to přesunout do pokročilejších částí.

Osobně bych preferoval jít cestou co nejštíhlejší a speciality a málo používané nebo pro začátečníka zbytné součásti mít jako nepovinné v průchodu základním kursem.
Majkl578
Profil
Do základního kurzu bych ještě dále zahrnul:
- kódování scriptů (vč. souborů) - trvat na UTF-8 a vysvětlit výhody a nevýhody,
- volba vhodného editoru - vysvětlit, proč Notepad není to pravé ořechové a nasměrovat prozatím alespoň na PSPad (popř. jiný, který rozumí UTF-8); editory vč. IDE do hloubky by se tu probírat neměly.
Joker
Profil
Majkl578:
- kódování scriptů (vč. souborů)
Je to tak rozsáhlé téma?
Nestačilo by prostě k editorům připsat zhruba jednu větu ve smyslu: „Ukládejte to v UTF-8 a vypněte si vkládání BOM, protože s tím jsou potíže“?

- volba vhodného editoru
Už tam je.

edit: Jsem zapomněl ještě
Amunak:
Je nějaký důvod dávat konstanty do pokročilejší části?
Důvod je ten, že začátečníci se bez toho docela dobře obejdou.
Myslím si to samé jako Str4wberry, i když u těch podmínek a cyklů jsem takhle daleko nešel. Ale možná by to bylo opravdu lepší.
Jan Tvrdík
Profil
Str4wberry:
Jak si představuješ nepovinné informace? Rozdělíme článek velkou čárou, za kterou budou ty nepovinné informace? Nebo ty informace prostě vynechat a mít např. cykly znova v pokročilé části, kde se můžou řešit třeba iterátory?
Alphard
Profil
[#14] Jan Tvrdík
Tlustou čáru asi ne.
Na jednu stranu bych začátečníkům necpal všechny detaily, na druhou stranu by to mělo být ucelné, u podmínek by měl být i switch. Nebo bude v další části samostatná pokročilá kapitola o větvení?

Takže použít nějakou strukturu, kdy lidem řeknem, tohle teď můžete přeskočit, přečtěte si to za měsíc.
Joker
Profil
Jan Tvrdík, Alphard:
Mohli bychom to rozdělit na „základní“ a „pokročilou“ část. Něco jako „Podmínky - základy“, „Cykly - základy“ a „Pokročilé podmínky“, „Pokročilé cykly“.

Vzniká trochu problém, že ty články by asi měly být provázané, čímž někdo bude ze základního kurzu pokračovat z podmínek místo na cykly na pokročilé podmínky a jak ho pak poslat zpátky do základního kurzu? Mít v pokročilých podmínkách odkaz na cykly? To už začíná být trochu divné.

edit: Možná to mát v základním kurzu, ale nějak označené jako nepovinné?
Petr ZZZ
Profil
Tohle by nešlo?

Podmínky

— Základy

— Pokročilé techniky

— Těžce profesionální fígle

Tori
Profil
Ad základní vs. pokročilé cykly/podmínky:
1. Kolika témat ze základního kursu by se to týkalo? např. variabilní počet argumentů+func_get_args by imho patřilo spíš do "Programujeme v PHP"
2. Je v zákl. kursu takové téma, které by vyžadovalo znalost těchto rozšiřujících informací?

Pokud budou odpovědi "málo" a "ne", mohly by se tyhle články připojit až na konec zákl. kursu, třeba jako malá podkategorie. A na konci článku "Kombinování PHP a JS" by mohl být rozcestník, jestli chce návštěvník pokračovat na část pro pokročilé, anebo si přečíst ještě rozšiřující informace k tomu, co už zná (+ přidat odkaz na tu rozšiřující část na začátek prvního článku v "Programujeme v PHP").
Jan Tvrdík
Profil
Petr ZZZ:
To odpovídá té výše popsané variantě rozdělení velkou čárou.

Těžce profesionální fígle“ bych to kurzu začátečníků nedával, mohli by se polekat. Rozdělení na základní a pokročilejší (ač ve skutečnosti stále základní) můžeme zkusit (někdo tak zkusí článek napsat), ale myslím, že varianta, kdy to takhle dělit nebudeme, zvítězí.
Petr ZZZ
Profil
<flame class="smazat">Honzo, programátory, kteří se už v larválním stadiu polekají, je třeba důsledně a zavčas vyfiltrovat. :) </flame>
Again
Profil
Podle mě to nemá cenu nějak důsledně rozdělovat, akorát v tom vznikne hned na začátku nepořádek. U každého článku budou dle domluvy revize, takže se spíše domluvíme na hloubce u konkrétního článku po jeho zveřejnění, než když to teď budeme řešit obecně.
Jan Tvrdík
Profil
Z pokročilých témat chybí např:
• iterátory
• reflexe
• SPL (např. Countable)
• jmenné prostory
• anonymní funkce
• traity
• callbacky
Joker
Profil
Jan Tvrdík:
Pokusil jsem se to rozházet do příslušných kategorií.
Jan Tvrdík
Profil
Joker:
Jmenné prostory bych dal do části o OOP. Lze je sice používat i mimo OOP, ale v praxi se to neděje. Navíc většina záludností, které je potřeba vysvětlit, spočívá v použití a chování klíčového slova use.
Again
Profil
Dneska jsem si začal sepisovat nějaké informace o proměnných a měl bych návrh ohledně "používání cizích slov". Pokud užiji v textu nějaké nové neznámé slovo, které v seriálu ještě nezaznělo označují ho kurzivou a před něj nebo za něj přidávám vysvětlení. Příklad: Prvotní přiřazení hodnoty k proměnné se odborně nazývá inicializace. Tento způsob bych byl rád, kdyby se sjednotil, a potom třeba v kapitole o podmínkách autor už znovu nemusel vysvětlovat daný pojem. Cizí slova se snažím používat v omezené míře, ale některé základní věci by měl začátečník přece jenom znát.

Jinak byl bych rád, kdyby se někdo vyjádřil k mému [#7] příspěvku, asi se na něho v celé záplavě různých příspěvků zapomnělo.
Jan Tvrdík
Profil
Again:
měl bych návrh ohledně "používání cizích slov"
S návrhem souhlasím.

Mám zejména na mysli spojování tabulek
Spojování tabulek určitě probrané bude.
Joker
Profil
Again:
měl bych návrh ohledně "používání cizích slov"
Ano, to je rozumné.

Jinak byl bych rád, kdyby se někdo vyjádřil k mému [#7] příspěvku
Spojování tabulek je vlastně součást výběru dat. Možná by to šlo rozdělit na základy a pokročilé výběry.
Joker
Profil
Aktuální stav:
Mám nějak tu první kapitolu, ještě mi pro ni chybí obrázek komunikace mezi klientem a serverem. Chci, aby tam byl vidět průběh: 1. Klient odešle požadavek, 2. Skript na straně serveru, 3. Server odešle odpověď, 4. Zpracování na straně klienta a zobrazení stránky.
Něco v podobném duchu jako mám tady.
Zatím si nejsem jistý, jestli to udělat tak jako v tom odkazu, nebo raději jako animaci.

Jinak je text první kapitoly připravený k připomínkování.

Dál jsem ještě přidal téma Doporučené nastavení editoru, ale pokud těch doporučení bude málo, sloučím to s volbou editoru.
Tady bych ocenil názory jednak která všechna nastavení tam mít a jednak kterým editorům se nejvíc věnovat. To by mělo vycházet z toho, že jako minimum doporučuji pokročilý textový editor a jako nejlepší volbu PHP IDE. Určitě budu vycházet z (a odkazovat na) Jaký editor pro PHP (přehled editorů).
Zatím to vidím na PSPad za textové editory a za IDE si nejsem jistý. Nejvíc znám Eclipse, ale nevím, jestli se nevěnovat raději/také něčemu jinému.
Pokud jde o nastavení, zatím mě napadlo:
Kódování UTF-8, vypnout BOM, zapnout čísla řádků, zvýrazňovač pro PHP, k odsazování používat tabulátor a v editoru nastavit, aby to opravdu dělalo tabulátor (ne mezery), nastavit si rozumnou šířku tabulátoru, rozumný pravý okraj.
Alphard
Profil
Joker:
jestli to udělat tak jako v tom odkazu, nebo raději jako animaci
Zůstal bych u obrázku, jen se mi pocitově (nevím proč) víc líbí vést první šipku doprava, takže bych dal server na pravou stranu. Ale možná to bude podobé jako kdysi diskuse na zdrojáku, na kterou stranu má jít Další ve stránkování...
Pokud jde o popisky a podobu, moc se mi líbí Nette s barevnými šipkami.

jako nejlepší volbu PHP IDE
Určitě.

Nejvíc znám Eclipse, ale nevím, jestli se nevěnovat raději/také něčemu jinému
Osobně na PHP používám NetBeans, Eclipse používám pro vývoj Java + Android, obě jsou podobná, je to jedno.

K tomu nastavení bych dal nějaký screenshot s rozumným sestavením oken, očíslovanými řádky, obarveným kódem a popisek "nějak takhle byste měli vidět projekt".
Možná by se mohl dát dohromady dohromady nějaký seznam užtečných klávesový zkratek, já si neumím představit život bez Ctrl + R, Ctr + E, Ctrl/Alt + Shift + Up/Down, Ctrl + Backspace/Delete apod.
Radek9
Profil
Joker:
Mohl bych poprosit o reakci na moji žádost v [#8]? Nevím, jestli jsi to náhodou nepřehlédl. Současně s tím bych si i rád vzal téma Anonymní funkce.
« 1 2 3 4 5 »

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: