Autor Zpráva
sifik
Profil
Dobrý den,

chtěl bych požádat o radu. Má takový problém, že u většího projektu ztrácím přehled ve svém kódu. Jedná se tedy hlavně o PHP.... Své projekty mám postavení tak, že hlavní kostru projektu tvoří dva adresáře. Root a admin. Souboru navzájem pak dávám dohromady přes include. např:

require "../main-func.php";
require_once (Connect("admin-head"));
include_once (Connect("admin-note"));


Asi si nedokážu dobře rozvrhnout projekt nebo něco stále přehlížím. Bohužel nemám žádná "šablonovací" systém. Doporučili byste mi ho? Nebo jak jinak to řešit (...OOP)? Předem díky za rady, tipy nebo odkazy.
breeta
Profil
Základem je MVC, bez OOP větší projekt bude nepřehledný a jak se naučíš OOP tak už nebudeš chtít jinak protože ti to usnadní práci. Jako šablonovácí systém můžeš použít např. Smarty. a k tomu použít nějakou svoji obsluhu událostí nebo rovnou použít nějaký Framework, např. Nette, Zend, Symfony 2.
Ugo
Profil *
Na přehled v kódu zapomeň. Je známý, že 5 minut po dokončení už programátor ani neví co vlastně dělal, natož jak. U většího projektu opravdu využiješ OOP jak říká breeta .. nebo nově namespaces, kód se tak dá logicky rozdělit do menších částí, ohledně FW 3. strany a udržovatelnosti bych byl opatrný (předevsím s takovými molochy kde je potřeba X stránkovej návod i na Hello World ... když už tak třeba CodeIgniter... nebo udělám reklamu sobě - project LUCI ... kterej bych ti ale musel poslat a nemá momentálně renderovací jádro což je celkem zásadní nedodělávka xD), podlě mých zkušeností je prostě potřeba k přehlednosti psát si vše sám. Smartům se vyhni kilometrovým obloukem, zvláště jestli máš teď problémy. Občas s nimi musím dělat a je to neštěstí, šablonovací systém je PHP samotné. MVC je dobrá architektura, ale samotná neřeší nic stejně jako OOP, jde o princip myšlení a ten se nenaučíš, ten prostě přijde časem. I po 7 letech pořád měním návrhy, strukturu... . Vždycky když něco uděláš, tak stejně ihned zjistíš že nejlepší by bylo to smazat a udělat jinak.

Už z těch 3 řádků se mi zdá, že by sis měl taky udělat určité zvyky, například používat jenom require nebo jenom include.

pár rad obecných a známých :
- čitelný kód, jednotnost zápisu
- logicky oddělovat funkční části - k tomu tě dost donutí právě MVC(P) a OOP při dobrym návrhu
- dobře pojmenované soubory, funkce, proměné, objekty - v jednom jazyce, případně podle zvyklostí
- psát kód krátkej a jeli někde použit stejnej kus 2x nebo tu je ta možnost - už tvořit funkci mimo obsah stránky
- editor na kterej seš zvyklej, vystačíš si bez vychytávek, hlavní je font, barvy, odsazení
- nemastit půlku na lokále a půlku na FTP
- držet si někde čistou a aktuální verzi základní struktury .. to je nejtěžší
sifik
Profil
Návody na své aplikace nesestavuji :D ..Jak jsem tak koukal na to MVC, tak se dá říci, že tento architekturu vesměs nevědomky dodržuji. Projekt Luci, to zní dobře :) Jsem zvědavý.

Asi mám problém v tom, že nidky se svými skripty nejsme spokojen, pořád bych je předělával, protože mě akždou chvilku napadá nové řešený. A tady začíná ten problém: Ačkoliv používám include atd... a dynamické stránky, pořád bych musel upravit, mnoho stránek, ať už bych měl pozměnit třeba jen 3 řádky. A to mi právě nevyhovuje.

Myslel jsem, že require mají svou přesnou funkci, a že by se taky tak měli používat. Proč bych měl volit pouze jednu?
Kry5
Profil
Já zase doporučím ze své zkušenosti :-). Já dokonce v PHP dělal e-shop a teda nechtěl bych se v tom někdy znovu hrabat :-).
Jak už bylo zmiňováno přede mnou, nejduležitější je pochopit OOP a pak je nejlepší cestou Nette Framework s novou dokumentací už je lehčí se ho naučit a navíc máš k dispozici aktivní fórum. Nette v sobě zahrnuje i MVC architekturu (MVP) a i vlastní šablonovací systém latte.
shaggy
Profil
Kry5:
pak je nejlepší cestou Nette Framework
Zase nemusíme zavádzať ľudí, ktorí nikdy nerobili s OOP/frameworkami. Ja si nedovolím tvrdiť, že najlepší framework je ten, ktorý používam a ani si nemyslím, že by Nette bol ten najlepší.
Kry5
Profil
shaggy:
Kry5:
Já zase doporučím ze své zkušenosti :-).
Mluvím ze své zkušenosti, netvrdím, že pro každého je nejlepší.
Alphard
Profil
[#2] breeta
Tak Smarty bych se vyhnul obloukem, uznávám, že jsem naposled pracoval s cca 2 roky starou verzí, ale neskutečně mě vytáčela.

[#3] Ugo:
podlě mých zkušeností je prostě potřeba k přehlednosti psát si vše sám
To podle mě není nutné, jestli děláte 7 let, začínal jste v době, kdy nebylo moc co kopírovat, každý si vytvářel vlastní framework, ale dnes to tak nevidím.
editor na kterej seš zvyklej, vystačíš si bez vychytávek, hlavní je font, barvy, odsazení
Nevím, co myslíte těmi vychytávkami, ale spíš nesouhlasím. Sám používám několik programů, SciTE a PSPad na příležitostné scripty a NetBeans na velké projekty. Neumím si moc představit, že bych na něčem větším pracoval bez podpory IDE.

sifik:
Myslel jsem, že require mají svou přesnou funkci, a že by se taky tak měli používat. Proč bych měl volit pouze jednu?
Require() při nenalezení souboru vyhodí chybu, include() jen warning. Pak tam je možná ještě rozdíl v návratových hodnotách, když soubor obsahuje return. S frameworky se většinou moc nepoužívá ani jedno, stačí načíst framework a ten už má nějaký autoloader, který se postará o zbytek.

Své projekty mám postavení tak, že hlavní kostru projektu tvoří dva adresáře. Root a admin
Takže to jsou víceméně moduly, klasický web a administrace? To může být dobrý začátek, dál je to ale vhodné třídit, v případě MVC na controllery, modely, šablony. Část modelu je často společná více modulům, cizí scripty nebo vlastní komponenty se dávají do samostatného adresáře.
sifik
Profil
S Frameworky nemám dobré zkušenosti, takže jsem zatím v tomto ohledu docela skeptik. Možná kdybych si někdy udělal svůj :D

Alphard:
Require() při nenalezení souboru vyhodí chybu, include() jen warning
Ano právě to mám namysli. Require používám jen pr soubory, které jsou pro načtení stránky nutné.

Takže to jsou víceméně moduly, klasický web a administrace?
Ano. V modulech a cizích skriptech mám tedy bordel. Vždy je mám ve složce kde jsou potřeba... V tomto si tedy musím udělat pořádek.

A jaký máte názor na postup, jaký je popsán např. v tomto článku? http://mike.treba.cz/dynamicke-skladani-stranek-pomoci-include-dil-ii/

Zdá se mi to velice inteligentní, ale v praxi mi to moc dobře nefunguje...
Alphard
Profil
sifik:
A jaký máte názor na postup, jaký je popsán např. v tomto článku?
Až na detaily rozumný postup, ale rok a půl starý a už tehdy byl vývoj někde jinde.

Tím, že nesledujete frameworky a současný vývoj pak vymýšlíte kolo. Zvlášť Nette, které se teď hodně vyvíjelo, moho při sledování diskuse kolem vývoje v posledních několika letech velmi pomoci. Tvorba vlastního frameworku bez znalosti konkurence velmi pravděpodobně povede ke konstrukcím, které se budou mnohokrát předělávat.
breeta
Profil
sifik:

Buď budu pracovat na svém frameworku, nebo na vývoji web aplikací.
Ty přece taky nepracuješ na vývoji PHP nebo snad ano? Musíš si říct na čem budeš pracovat, na obojím to prostě časově nejde.
Taky mám svůj vlastní framewok ale pořád jsem ho přepisoval a nebyl sním spokojen, pokud mám možnost používat Nette, Zend , Symfony 2 nebo jiný framework který se pořád vyvíjí a má dobrou dokumentaci tak proč ne když mě to ulehčí práci ...
sifik
Profil
Jediný důvod, proč jsem ještě nezačal používat nějaký framework je, že učení něčeho takového mi připadá zbytečné. Protože jak dlouho strávíte tím, že se musíte nejdříve ten framework naučit? Pak než ho začnete ovládat, než si na něj zvyknete, a nehledě na to, jak dlouho strávíte laděním svých aplikací postavených na fw, které se nebudou chovat, tak jak vy chcete :) Nette se mi líbí snad po všech stránkách a dokonce si myslím, že by mi i vyhovovalo, ale stojí to za to?

Proto jsem viděl jako jedinou možnost si nějaký fw sám vytvořit, člověk by alespoň přesně věděl, co a jak každá část kódu dělá. Protože jinak to dopadá, jako s telefonem - každý ho používá, ale nikdo pořádně neví, jak funguje :D
Tori
Profil
sifik:
Proto jsem viděl jako jedinou možnost si nějaký fw sám vytvořit, člověk by alespoň přesně věděl, co a jak každá část kódu dělá.
Tak laicky mi připadá, že psaní vlastního FW znamená znalost několika jiných, jejich pochopení a jistotu, že to co mi u nich chybí/nevyhovuje, dokážu napsat stejně dobře.
Lostindream
Profil
Tento problém jsem řešil také. Hledal jsem framework, na kterém bych mohl stavět své aplikace. Prošel jsem snad pře desítku frameworků, od nette, přes codeigniter, haefko, cakephp, doo, ... Nakonec se mi asi nejvíc líbila kohana, resp. nejvíce mi seděla a velmi dobře se s ní pracovalo.

Nicméně cesta skončila tak, že jsem skončil u vlastního frameworku. Měl jsem k tomu několik důvodů. Potřeboval jsem si to doslova osahat na vlastní kůži, proniknout do MVC a kompletně pochopit systém, architekturu, potřeboval jsem jakousi light verzi těch ohromných frameworků, které toho sice umí hodně, ale na druhou stranu jsou dost těžkopádné. Nyní mám systém, ve kterém se velmi dobře vyznám, fungují zde zásuvné moduly, knihovny, administrace webu. Vše pracuje podle mého a využil jsem různé věci z různých frameworků, které jsem testoval. Ujasnil jsem si, jak chci, aby byl řešený šablonovací systém, správa databáze, generování HTML, centrální registr apod.

Takže pokud je čas a možnost, doporučuji jít do svého. Velmi se to ocení v budoucnu. Pokud je potřeba rychle a co nejčistěji zprovoznit web, doporučuji sáhnout již po ověřených věcech. Nicméně za ty zkušenosti a logiku uvažování mi to stálo. Dalo mi to hodně věcí, přišel jsem na spoustu vychytávek, vylepšil nebo přizpůsobil jsem si věci od jiných, naučil se logicky pojmenovávat proměnné, funkce a vytvořil si vlastní styl, kde se po otevření kódu velmi rychle orientuji.
Medvídek
Profil
Já jsem celkem rád, že se nám s kolegou OOP vyhnulo a jsme celkem spokojený. A pokud člověk nepíše jako prase, tak není problém se vyznat i v kódu, který je rok starý (alespoň mě to problém nedělá).
sifik
Profil
Tori:
Ano, asi by bylo vhodnější doplňovat fw vlastními doplňky, které by lepili to, co tam standartě chybí, ale to je, myslím, bez pochopení, jak daný fw funguje, zcela nemožné.

Lostindream:
Doufám, že se někdy dostanu do situace a časové přízně, nebo mě k tomu donutí situace, že takový fw vytvořím taky. Jak dlouho si ho asi tak tvořil? Když započteš čas i strávený s promyšlený návrhů atd... (Btw, znám tě z Twitteru :D)

potřeboval jsem jakousi light verzi těch ohromných frameworků, které toho sice umí hodně, ale na druhou stranu jsou dost těžkopádné
Souhlasím.

Medvídek:
U dynamicky tvořených stránek je to vůbec možné? Mohl bys třeba poskytnout nějaký kus kódu? Jsem zvědavý, jak to vypadá :)
Medvídek
Profil
sifik:
Jojo, až budu v práci, třeba tam nejdu kus něčeho zajímavýho. Samozřejmě bez dokumentace by to nešlo, jen funkce pro XMLRpc mají přes 6000 řádků :)
sifik
Profil
Medvídek:
Není divu, že u nějaké vetší aplikace jeden soubor má tolik řádek. Třeba i bez dokumentace ;)
Lostindream
Profil
sifik:
No, trvalo to celkem dlouho. Musel jsem se do toho nejdříve vžít, vyřešit pro mne nejpohodlněji routing, komunikaci s databází, šablonovací systém apod. U toho samozřejmě bylo mnoho předělávek, protože jsem několikrát zjistil, že cesta, kterou se snažím jít, je nesmyslná a spoustu věcí jsem musel přepsat. U toho jsem testoval ostatní frameworky a inspiroval se, jak je to řešeno jinde. Některé věci jsem si přizpůsobil a upravil pro sebe. Když to shrnu, tak s nějakými přestávkami (nemohl jsem se tomu věnovat stále) mi to trvalo asi rok až dva, dostat to do nějaké funkční podoby. Dalo mi to ale strašně moc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0