« 1 2 »
Autor Zpráva
Joker
Profil
Autor: Joker
Odkaz na aktuální verzi textu: Základní kurz 4: Základy syntaxe
Zveřejněno
Odkud se vede diskuse k aktuálnímu stavu textu:
První příspěvek po poslední revizi textu

Joker
Profil
Ještě to není úplně hotové a kromě názorů bych chtěl poradit, jak pokračovat.

Součástí základů syntaxe má být i příkaz include, ale přijde mi to už docela dlouhé a navíc include je trochu specifické téma, které by se hodilo mít samostatně.
Takže:
a) Je to už dost dlouhé, takže bych jen doplnil nějaké otázky a cvičení a include oddělil samostatně.
b) Raději to udělat pohromadě, i když to bude delší.
Alphard
Profil
Do rozvržení (co kam tematicky patří) ti mluvit nebudu, ale nijak extrémně dlouhé se mi to nezdá. Nepíšeš texty pro školku, kde děti udrží pozornost jen pár minut a nikdo není nucen číst to celé bez přerušení.
Preferoval bych i delší ucelené kapitoly, ať se to zbytečně neroztahuje.
Jan Tvrdík
Profil
Joker:
Existují ještě další způsoby
To je tak extrémně bizarní, že to rozhodně nestojí za zmínku v základním kurzu.

vypsání "Ahoj světe".
Není česky správně „vypsáním“?

Uložte třeba jako prvni.php do adresáře, kde máte kořen webu.
Tohle bude chtít nějak rozepsat. Spousta začáteční skončí na tom, že nebude vědět, kde je kořen webu. Mám dojem, že se to řešilo v některé z předchozím kapitol, takže bude stačit odkázat že tím kořenem webu je ten kořen webu, o kterém jsme se bavili dříve.

například http://localhost/prvni.php
Ne například, ale zcela určitě tuhle. Jakou jinou?

Na stránce i v jejím zdrojovém kódu byste měli vidět jen text "Ahoj světe!"
Ten troubleshooting, který následuje, bude vhodné rozšířit, neboť tady se taky lidi snadno zaseknou. Minimálně zmínit, co dělat, když uvidí 404.


Nejsem si jist, zda k té části ohledně týkající se escapování nedat více příkladů pro lepší pochopení.

Myslím, že by bylo dobré zmínit také \n a \t.


přijde mi to už docela dlouhé
Na rovinu – všechno co tobě přijde dlouhé je ve skutečnosti poměrně krátké. Máš tendenci tvořit hodně malých kapitol místo méně delších. Zatím je to asi jedno, časem můžeme některé kapitoly spojit, uznáme-li to za vhodné.
Joker
Profil
Alphard, Jan Tvrdík:
OK, udělám jednu delší kapitolu.

Jan Tvrdík:
To je tak extrémně bizarní, že to rozhodně nestojí za zmínku v základním kurzu.
Asi nestojí. Chtěl jsem to tam mít pro úplnost, ale ta část není postavená jako úplný výčet (je tam s čím se můžete setkat).

Spousta začáteční skončí na tom, že nebude vědět, kde je kořen webu.
Až budeme mít vybraný nějaký balíček pro vzorovou instalaci, může se to dělat přímo pro něj.
Jinak mě moc nenapadá, jak obecně platně popsat, kde je kořen webu (když si ho teoreticky může správce webserveru změnit).

Ne například, ale zcela určitě tuhle. Jakou jinou?
Já to původně plánoval trochu volněji, že by to počítalo i s tím, že si čtenář na webu založí třeba ještě nějaký projekt, nebo ten soubor pojmenuje jinak. Ale bude lepší to napsat víc autoritativně.

Ten troubleshooting, který následuje, bude vhodné rozšířit, neboť tady se taky lidi snadno zaseknou.
Zkusím.

Nejsem si jist, zda k té části ohledně týkající se escapování nedat více příkladů pro lepší pochopení.
Myslím, že by bylo dobré zmínit také \n a \t.

O vypisování některých znaků přes escape sekvence jsem přemýšlel.
Na jednu stranu by se hodilo to tam zmínit, na druhou stranu mi to pro začátečníka přijde zbytečné. K čemu čtenáři bude se naučit vypisovat do stránky odřádkování anebo tabulátor, když v rámci základního kurzu se bude probírat jen generování HTML stránek, kde to prakticky nemá efekt?
Jan Tvrdík
Profil
Joker:
Chtěl jsem to tam mít pro úplnost
Což je naprostý nesmysl vzhledem k tomu, že píšeme základní kurz a ne českou verzi php manuálu (tam by ta úplnost dávala smysl).

Ale bude lepší to napsat víc autoritativně.
Jen velmi málo začátečníků se úmyslně odchyluje od krok-za-krokem návodů. Je dobré třeba v závorce poznamenat, že to nemusí nutně být localhost/prvni.php, pokud si překonfigurují server, ale ta hlavní cesta, kterou chceme, aby čtenář prošel, by měly být (hlavně v začátcích) výrazná, abychom minimalizovali riziko, že z ní začátečník sejde.

K čemu čtenáři bude se naučit vypisovat do stránky odřádkování anebo tabulátor, když v rámci základního kurzu se bude probírat jen generování HTML stránek, kde to prakticky nemá efekt?
Představ si, že budou vypisovat třeba tabulku a kouknou se do zdrojového kódu (tj. ne přes FireBug nebo Chrome Dev Tools). Všechno (!), co vypíší, bude slité na jednom dlouhém řádku. To není moc pěkné. Navíc to souvisí s tím úvodem do escapování.
Petr ZZZ
Profil
Joker:
Jen nějaké drobnosti, jinak bezva a děkuji za další kapitolu. :)

1. Aby tedy bylo poznat, odkud

2. jako v ASP), ty ale nejsou běžně používané.

3. příkladem v programování vypíšeme "Ahoj světe".

4. Zadejte adresu souboru v prohlížeči (například http://localhost/prvni.php; zadávejte...

Toho středníku je třeba se zbavit, začátečník by ho mohl považovat za součást kódu. Třeba rozdělením na odstavce:

Zadejte adresu souboru v prohlížeči, například:
http://localhost/prvni.php
Zadávejte...

5. Ze stejného důvodu bych tady...
ne cestu na disku, jako C:\www\prvni.php!)
...odmazal vykřičník a dopsal jen tečku až za závorku:
ne cestu na disku, jako C:\www\prvni.php).

6. Slovosled:
nebo nemáte správně nastavený server
nebo nemáte server správně nastavený

7. Slovosled (tři substantiva za sebou jsou matoucí):
Všimněte si, že zvýrazňovač syntaxe komentáře barevně odliší.
Všimněte si, že zvýrazňovač syntaxe odliší komentáře barevně.

8. Slovosled a čárka před vedlejší větou:
například když chcete spustit skript jehož část není hotová nebo hledáte chybu
například když hledáte chybu nebo chcete spustit skript, jehož část není hotová
(Původní slovosled je samozřejmě OK, ale když se upraví, ušetříme jednu čárku. :)

9. Tato formulace není jednoznačná:
„Na toto je dobré dát pozor když chcete zakomentovat delší kód, který už komentář obsahuje.“
Je komentář v kódu nebo kód v komentáři? Řešením je použití trpného rodu; předpokládám, že jen jedna z následujících dvou možností je správná (a obě přitom "překládají" původní dvojsmyslnou formulaci):
a) Na toto je dobré dát pozor, když chcete zakomentovat delší kód, který už je v komentáři obsažen.
b) Na toto je dobré dát pozor, když chcete zakomentovat delší kód, ve kterém už je komentář obsažen.

10. Příkazem, echo
Kubo2
Profil
Petr ZZZ:
Jen nějaké drobnosti,....
I já ještě nejaké přidám:

Joker:
Pojďme tedy na první skript. Začneme tradičním prvním příkladem v programování, vypsání "Ahoj světe".
V editoru si založte projekt, vytvořte nový PHP soubor a vložte do něj následující kód:
<?php
//vypíše pozdrav
echo "Ahoj světe!";
?>
Uložte....


1, Takže poprvé - není to zas až tak veľmi důležité, no ve veškerých učebnicích programování, které se mi „dostali do rúk“ (a nebyli to jen PHP učebnice) se první přiklad uvádí Hello world!, ne ahoj světe (Boli to všechno české učebnice).
Jak řikám, tohle není to hlavné co jsem chtěl říct. To byla jen taková malá pozn.

2, Podruhé - Nemyslím si, že je rozumné, když začátečníkům dáš hned hotový kód - na, skopírujte si, máte to hotové. Mnohí z nich jsou líní, a nebude se jim chtít číst text do konce, když už mají kód, a myslí si, že mu rozumí i sami.
Narážím na tuhle stránku, na kterou mně už dávněji odkázal Someone, když jsem potreboval generovat retězec.
Ta stránka je psaná způsobem postupného vysvětlování: Čiliže bych ti to, ak dovolíš, trochu přepsal (mimochodem, dobré je, že aspoň značky začiatku a konca php kódu vysvětluješ ješte před kódem:) ):
Ješte pred "Pojdme na prvni skript", vysvetli, co použijeme v kódu: že toto // je koment, tohle echo(); zas generuje výstup a pod. Tedy něco jak máš Pod textem, jen to prepiš nad kód, a zmaž to, že vložte do nej tento kód, prosím..


Takže bys mohl na začátek dát: (postup dle mnou odkazované stránky)
--> Budeme potřebovat:
1, funkci, která nám něco vypíše;
2, a značky pro uzavretí kódu.
3, Pak si tam dáme ješte komentár pro vlastní účely

Takže nejprve kód uzavřeme značkami <?php a ?>. Máme teď něco takéto:

<?php

?>

Mezi značky budeme písat kód.
Pak si tam dáme komentář (je teď vlastne zbytečný, no v delších aplikacích se nám bude hodit). Mali by sme mít takýto kód:
<?php
// tady může být cokoliv

?>

Kód zatím nic nedělá. A teď přijde na radu hlavní hviezda - funkce echo(); . echo(); se používá bez závorek:
echo "neco";

A teď byste mohli mít takovýto výsledný kód:
<?php
// tady ůže být cokoliv
echo "Hello world!";

?>

Takže treba nechat začátečníka rozmýšlet.

Můj príspevek ja neprehledný, ja vím, ale když to bude celé v takémto duchu, tak budu rád.
Joker
Profil
Kubo2:
ad 1, učebnice je česky, takže vypisovaný text bude taky česky.

ad 2, od čtenáře se v daném místě čeká přesně to, že si zkopíruje kód a bude koukat, co to udělá. Rozhodně v tu chvíli nechci, aby si čtenář ten kód psal sám. Na druhou stranu se ale od čtenáře očekává, že pochopí 4 řádky triviálního kódu plus vysvětlení v textu.

Pokud někdo nedokáže pochopit, že PHP kód se uzavírá do <?php a ?> z toho, že to tam bude takhle napsané a pak příklad celého kódu, je zbytečné ho učit programovat, protože na to prostě nemá.
Kubo2
Profil
sorry, zapomněl jsem že tohle je zatím základní kurz.
No v tích pokročilejších kapitolách by ste podle mně mohli pokročilým týmto způsobem trochu "přetrénovat mozky".

Co ty na to ?
Amunak
Profil
Joker:
Bude tam někde zmíněné, že koncová značka je nepovinná?
Joker
Profil
Amunak:
Bude tam někde zmíněné, že koncová značka je nepovinná?
Druhý odstavec:
Ukončovací značku není třeba psát u PHP kódu, který sahá až do konce souboru. Za konec PHP kódu se v takovém
případě jednoduše považuje konec souboru. To může být někdy užitečné, později v této učebnici si takové situace
ukážeme

Mělo by tam k tomu být ještě něco?

Jinak se chystám ten text ještě přepracovat a rozšířit ještě o další příkazy.
Teď jsem se učebnici nemohl moc věnovat a když už, dělal jsem na kapitole o chybových hláškách. Ta je svým způsobem závislá na kapitole o základech syntaxe, respektive ty chyby jsou dost obecné a někdy je tam sklon mluvit i o pokročilejších věcech, tak jsem to chtěl sladit. Čili z chyb vyházet moc pokročilé věci a naopak do základů syntaxe přidat věci, které se pak hodí u těch chyb.
Amunak
Profil
Joker:
Aha, omlouvám se. Text jsem předtím jen přeletěl očima a z toho co psal Kubo2 jsem pochopil, že se tam o tom nepíše.
Joker
Profil
Jan Tvrdík:
„Na stránce i v jejím zdrojovém kódu byste měli vidět jen text "Ahoj světe!"“
Ten troubleshooting, který následuje, bude vhodné rozšířit, neboť tady se taky lidi snadno zaseknou. Minimálně zmínit, co dělat, když uvidí 404.
Ještě k tomuhle, možná bude nejlepší řešení mít zvláštní stránku pro řešení takových problémů a na ni odkazovat?
Myslím tím něco ve stylu FAQ pro otázky typu: Kde najdu kořen webu? Kde najdu konfigurační soubor PHP? Jak zjistím, jestli mám něco nastavené nebo ne? A podobně.
Kubo2
Profil
Joker:
... stránka na řešení takových problémů ...
Mohli by ste inšpirovat navigáciou z JakPsátWeb. Na tej FAQ stránke by byli kotvy (něco jako tady při action=manual) a na konci kapitoly pod cvičeniami by bola navigácia že kam dál a časté problémy s tou kapitolou spojené nebo tak nějako.. No prostě by se odkazovalo na jednotlivé kotvy na tej stránke
Joker
Profil
Kubo2:
To je samozřejmé, stejně je to dělané i tady na diskusi.
Kubo2
Profil
a co s tím, co jsem napsal v [#10]? Myslím, že to není zlý nápad. Ať se lidi troc.hu naučí přemýšlet a sami řešit problémy.
Petr ZZZ
Profil
Reaguji na Kuba2:
„Ať se lidi trochu naučí přemýšlet a sami řešit problémy.“
Ano, vést žáka k samostatnému přemýšlení je žádoucí. Jen doufám, že zde nemáš na mysli metodu házení klacků pod nohy. Myšlenkou učebnice není druhým vytmavit, jak jsou neschopní, ale pomoct jim a usnadnit jim učení.

Obecně si myslím, že bude lepší, když s případnými návrhy na vylepšení počkáš na hotový manuskript. Zrovna u Jokerových textů bych si ohledně didaktické kvality nedělal starosti.
Chamurappi
Profil
Reaguji na Kuba2:
Myslím, že to není zlý nápad.
Přijde mi to jako velmi špatný nápad. Kopírováním (a upravováním) malých hotových příkladů se dá hodně dozvědět. Rozbíjet funkční věci je větší zábava, než sestavovat je z dílků a zapracovávat nějaké teoretické poučky. Tvůj postup mi připomíná papírové učebnice. Brrr…

Mnohí z nich jsou líní
Všichni jsou líní. Lenost mají programátoři přímo v konstruktoru :-)
Dál bych toto téma nerozebíral.
Kubo2
Profil
Petr Zzz, Chamurappi:
Tému, co jsem začal v [#8], teď uzavírám.
Petr, tys mě zle pochopil. Já nechci žákovi nijak vytmavovat jeho neschopnost. Neschopní lidi jsi dle mě učebnici nebudou číst - můj otec je podobný, jakkoliv se mu snažím vysvětlit něco v php, robí se že mě neslyší a pak začne mluvit úplně o něčem jiném. Neschopní lidi si jednoducho určitě nepůjdou dobrovolně číst tu učebnici..

// mobil <---------Edit: už to tam dávat nebudu
Joker
Profil
Tak dnes po delší přestávce dvojitá dávka. Kromě prvního návrhu kapitoly o chybách jsem razantně přepracoval kapitolu o základech syntaxe.

Odkaz je stále stejný.

V první řadě jsem zrušil plán to rozdělit na dvě kapitoly, takže text je mnohem delší a pokrývá víc věcí.
I původní text je ale o dost jiný, jednak jsem ho upravil ve smyslu připomínek výše, jednak (doufám) zpřehlednil a jednak trochu rozšířil.

Do konečné verze ještě chybí udělat screenshot phpinfo a ještě případně upravím cesty k souborům tak, aby odpovídaly vzorové instalaci serveru.
Amunak
Profil
Joker:
Skvěle napsané, v podstatě nemám co dodat. Tedy.. Našel jsem tam pár překlepů (chybí tam asi dvě tečky za větou), ale jinak je to pěkné. Čtivé, krátké, je tam všechno důležité a i linky na další články, takže to začátečníka navnadí co že se to dál dozví :)

Ty tečky chybí konkrétně tady:
* jako C:\www\prvni.php!).
* ...nebo jste soubor nahráli na špatné místo (jinam než do kořene webu). Zkontrolujte umístění...

Taky tam píšeš, že kódu mimo PHP značky si PHP nevšímá. To není úplně pravda, viz:
<? if(false) {?>
nevypíše se
<? } ?>
Joker
Profil
Amunak:
Budu muset změnit font nebo něco, protože mám problém při psaní rozeznat velká a malá písmena, hlavně V a Z.
Několik jsem jich opravil když jsem to po sobě sám četl a přesto tam je další.

Taky tam píšeš, že kódu mimo PHP značky si PHP nevšímá. To není úplně pravda
Dobrá poznámka.
Asi by byl dost oříšek to vysvětlovat bez podmínek a bloků, takže to budu muset nějak obejít.
Alphard
Profil
Joker:
Jen technická poznámka. Ty jako moderátor nemáš problémy s editací starých příspěvků, takže jak už někdo navrhoval, bys mohl aktuální verzi textu kopírovat do [#1]. Teď jsem si zkusil zobrazit náhled a s obarveným kódem a aspoň nějakým formátováním to vypadá mnohem líp. Jen tam chybí trocha tučného písma a nadpisů.
Kubo2
Profil
Joker, měl bys to nakopírovat sem, mně se teď na dropbox vůbec nedá dostat, vrací mi chybu Vstupná adresa neodpovedá.
Tak aby jsme to měli vždycky poruke, když něco...
Joker
Profil
Alphard:
Zkusím, ale má to myslím nějakých 12000 znaků, tak snad nebudou problémy.
Tak se to nevešlo, je tam tedy jenom (větší) část textu.

Jiné téma:
Ještě chci kromě volání funkce doplnit volání funkce s argumentem (viz - druhá odrážka a pak následující příspěvky) a přemýšlím, jakou funkci použít pro demonstraci.
Napadla mě date() jako docela užitečná funkce i pro začátečníka, akorát tam je na delší vysvětlování už samotný ten argument, tak nevím, jestli s tím začínat.
Máte případně nějakou lepší funkci pro ukázku? Neměla by obsahovat nic co není zmíněno v článku, takže ani třeba proměnné.
Alphard
Profil
Joker:
Napadla mě date() jako docela užitečná funkce i pro začátečníka, akorát tam je na delší vysvětlování už samotný ten argument
Alternativou jsou třeba matemické funkce pow() apod. Nejsou tak častou používané, ale zase bude jasnější princip parametru. Přemýšlím o dalších, ale najít smysluplné využití bez proměnných je oříšek.
Alphard
Profil
Joker:
 <? a končí ?>. Jeho fungování ale závisí na nastavení PHP
Od PHP 5.3, kterou budou mít staženou je default <?php, ne? A na hostingu už se také častěji setkají s <?php, takže o <? bych mluvil vyloženě v minulém čase. Maximálně zmínit, že bude možné používat <?=.

Už tedy umíme první příkaz, echo. Zatím ale nám ale PHP v praxi moc nepřineslo oproti přímému zápisu do HTML.
Tady si zahraji na Petra, přeformulovat :-)

Příkaz include je lepší než klíčové slovo, ale stejně to není ono. Používáš je hodně, ale nejde vymyslet něco lepšího? Snad bych radši mluvil o funkcích, než o příkazech :-/

Vložený soubor se zpracovává odděleně od prostředí souboru odkud byl vložen, takže například ve vloženém
skriptu musí znovu být počáteční značka PHP, jinak se skript nezpracuje.
Tohle se mi moc nelíbí. Než jsem to dočetl do konce, napadlo mě, co je to za blbost, že proměnné, funkce a vše se přece přenášejí. To "oddělené" zpracování by se mělo napsat jinak.
Joker
Profil
Doplnil jsem část o argumentech funkcí.

Po několika pokusech najít vhodný ukázkový příklad, kdy jsem pokaždé narazil na nějaký problém, jsem skončil u funkce trim().
Odkaz je stále stejný
Joker
Profil
Přidal jsem ještě odstavec „Společná HTML hlavička“.
Sice si nejsem úplně jistý, nakolik bude vhodné později v příkladech includovat soubor vytvořený v jiné kapitole, ale někdy se to asi hodit bude a minimálně jako ukázka to je myslím dobré.
« 1 2 »

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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