Sziasztok!
Úgy tűnik, hogy a szakdolgozatom kapcsán el kell merülnöm a PHP-programozás rejtelmeiben is. Eddig nem foglalkoztam a nyelvvel néhány pársorost kivéve, szeretném ha lenne valami globális elképzelésem róla. A hátteremről: kis C++, Java, és mostanában sok JavaScript.
Igazából hasonló tippeket várnék, mint amik az "Idiomatikus JS" topikban szerepelnek, csak PHP-hoz. Remélem, hogy vannak ilyenek, az ottani forrásokból is sokat tanultam :).
Köszönettel,
B
- 8689 megtekintés
Hozzászólások
Még most keress valami másik nyelvet :)
- A hozzászóláshoz be kell jelentkezni
Ha megtanul benne programozni, nem taknyolni és arra használja amire kitalálták: Weboldalt csinálni, akkor a PHP olyan mint a pi(n)a...
Majnem mint nekem a C. bár olyan könnyen lehetne C-ben is a taknyolást programozásra fordítani...
--
Fontos! Ha berágok, nem feltétlen személyed ellen szól...
openSUSE 13.1 x86_64
- A hozzászóláshoz be kell jelentkezni
Ha az a Ha ott nem lenne ... :)
- A hozzászóláshoz be kell jelentkezni
http://www.php.net/manual/en/langref.php
Szerintem ezt fusd végig, egész korrekt. Ha találsz is könyvet, valószínűleg messze idejét múlt, nagyjából az 5.1 óta azért rendesen variálják a nyelvi elemeket (pl. névterek, anonym függvények, goto :) [amúgy bármilyen language reference, amiben xkcd képregényt szúrnak be, máris olvashatóvá minősül :) ], csomó régi szemetet dobálnak ki belőle), legjobb esetben is a pár évvel ezelőtti nyelvről fogsz olvasni.
BlackY
- A hozzászóláshoz be kell jelentkezni
C után nem lesz nehéz a PHP. Sőt ... furi hogy nincs int, char, float, csak var $alma;
Minden változó $. Ha webhez akarod, akkor nem fogod elkerülni a HTML-4.01 (netán 5.0) tag-jeinek megismerését sem.
Továbbá a dinamikus webhez hamar kell SQL ismeret is.
Netán megsegítve a kliens oldalon a böngészőben lefutó Javascripttel, bár ezt a elkerülheted - viszont ismered.
Tehát: PHP + HTML + némi CSS + SQL + a végén Javascript
Ezért kell több tanulási idő a webhez. C után nem kimondottan maga a PHP a nehéz, bár a kész függvényeivel és az asszociatív tömbök, vektorok könnyű kezelhetőségéhez C után hozzá kell szokni. Itt ugyanis készen van rengeteg dolog nyelvi szinten is.
Ahol kezdeném a tanulást:
pelda1.php
<?php
for ($i=0; $i<10; $i++) {
echo "$i. kiiras
\n";
}
?>
És aztán HTML-4.01 (és némi 5.0) ismeret ürlapok kezelésével miegymással, továbbá http://www.php.net/manual/en/ mindenben segít. De HTML ismeretet meg kell szerezni a webhez. Ez utóbbi pedig nem a PHP nyelvet ismertető anyag része.
HTML-ben segít a web böngészőben a "forráskód megtekintése" lehetőség (Firefox: ctrl-u) és a http://www.w3schools.com/ oldal.
- A hozzászóláshoz be kell jelentkezni
Kollega jól mondja (<- ez a részletezett +1 akart lenni), még a sorba én beraknám (tippre a PHP és a HTML közé) a HTTP protokollt, fontosabb státusz kódokat, átirányításokat (hogy a szabvány szerint melyik status code-al mit kéne csinálnia a böngészőnek és mit csinál valójában :) lásd: 302). Jah, meg az SQL utánra a memcache-et, bár az faék egyszerűségű.
BlackY
- A hozzászóláshoz be kell jelentkezni
Hát igen. Aztán amint lehet, ismerkedni a PHP OOP lehetőségeivel, ami C++ után szintén nem lesz nehéz, a mikor és mire nem érdemes eldöntési képességével. Symphony és társai (keretrendszerek) mikor rúgjanak labdába és mikor ne.
No meg Apache esetén a .htaccess varázslataival.
És ami fontos: security-témák. Ellenkező esetben jönnek a jelszó megkerülésével való webes jogosultságszerzések, a támadó fájljainak feltöltése és szerverben való futtatása. Stb.
Igen fontos.
Szóval elég összetett a téma és lássuk be, kevesen (jómagam sem) értünk a dolgok végére. Van mindannyiunknak még mit tanulnia.
De a dolgok eleje szerintem kb. az amit előző hozzászólásomban írtam.
- A hozzászóláshoz be kell jelentkezni
Ha már van Java és Javascript ismereted akkor írjál portletet. (ld. www.liferay.com )
HTML, HTTP kell ahogy a többiek mondják.
Portlettel (mondjuk MVC Portlet és Liferay UI vagy Alloy UI) nem fog tovább tartani mint most elkezdeni a PHP taknyolást.
Szerintem.
És később is többet ér ez a tudás (sokkal).
--
Gábriel Ákos
http://i-logic.hu
- A hozzászóláshoz be kell jelentkezni
Szegény PHP nyelv. Valahol sajnálom, mert lehetőséget ad a taknyolásra és a legtöbb, magát PHP ismerőnek valló csak a taknyolásig jut el benne. Nem is látja, hogy lehet normálisan is kódolni, csak ahhoz még tanulnia kellene PHP programozást.
Pedig a C++ -hoz hasonlóan szépen is lehet benne programozni. Önfegyelem kérdése.
Sajnos hátráltató tényező, hogy gyakran a szakmailag nem belelátó főnököd nem érti a különbséget. A PHP az számára PHP.
Lásd még (bár nem feltétlenül a legjobb példa) a mediawiki forráskódját. Az rendesen megtervezett és osztályról osztályra kidolgozott kód PHP-ban.
Sajnos igaz, hogy a hétköznapokban PHP terén leginkább csak egymás után írt sorokból gányolt kódokkal találkozhatunk. De lehet a C++ -hoz hasonlóan szépen is programozni. Csak ehhez jobban kell szeretni ezt a nyelvet és az első lépésként megismert és már használhatónak tűnő gányolási ismeretek után mégtovább tanulni. Sajnos ezt a továbbtanulást a PHP nyelven ténykedők közül kevesen teszik meg.
- A hozzászóláshoz be kell jelentkezni
+1 +1 +1
most tartok ott, hogy tanulok újra, alapoktól mindent újraértékelve, próbálom a rossz berögződéseket levetni, új módon építkezni php-ban, amit lehet egyébként, mert kellően laza nyelv ehhez. illetve, a másik, hogy prototipizáláshoz, demozáshoz nagyon jól használható, produktív, de igen, nagyon könnyű benne lazán kódolni, átgondolatlanul, ehhez hozzájön, hogy maga a web is annyira kisérleti jellegű néhol, hogy ne lehessen tudni a best practice-eket könnyedén alkalmazni
- A hozzászóláshoz be kell jelentkezni
érdemes a logikai részt elválasztani a design (html)-töl. Erre vannak template rendszerek, mint pl. a Smarty (http://www.smarty.net)
Nagyon utálom amikor print-el/echo-val helyben kiadja a programozó a html-es kódot.
továbbá már nagyon sok minden készen van osztályokban/keretrendszerekben, nézd meg ezt is: http://pear.php.net/
--------
HOWTO: Zentyal+Zarafa+Setup+Outlook+Thunderbird+mobilephone sync
- A hozzászóláshoz be kell jelentkezni
Ez már 15 évvel ezelőtt is hiba volt.
--
Gábriel Ákos
http://i-logic.hu
- A hozzászóláshoz be kell jelentkezni
ugyan mondjatok már egy jó és egy rossz példát a kódra?
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/
- A hozzászóláshoz be kell jelentkezni
~Jó*:
$_GET['foo']
Rossz (ma már be se kapcsolható, hogy működjön):
$foo
Jó:
password_verify()
(PHP 5.5 ill. 5.3.7 felett kompatibilitási kóddal) Rossz: Bármilyen más implementáció
Jó:
private/protected
adattagok/metódusok, Rossz (amihez néhol ma is ragaszkodnak): minden public, _ prefix a "protected" és __ a "private" tagoknak, csak épp ugyanúgy írhatók/olvashatók
Jó: prepared statementek használata SQL injection ellen, Rossz: string összefűzögetés (ez a mysql_ fgv.kkel a legszebb, ahol escape-re is két különböző függvény van)**
...
*: Az igazán jó megoldás persze a requesthez tartozó cuccokat osztályba rejteni és azon keresztül elérni, unit tesztelhetőbb tőle a kódod
**: Stringekből összerakott, de aztán prepared statement-ként használt lekérdezések egy fokkal jobbak
BlackY
- A hozzászóláshoz be kell jelentkezni
+1
Nagyon nehéz jó PHP programozót találni. A web és a cms rendszerek nekem PHP - jó tudom van már Pythonban is cms, de még egyik sem tudta megdobogtatni a szívem.:)
- A hozzászóláshoz be kell jelentkezni
Van Java-s sőt .NET -es is.
--
Gábriel Ákos
http://i-logic.hu
- A hozzászóláshoz be kell jelentkezni
Mindenképp olvass el egy két agresszívebb php-kritikát, na nem azért hogy eltántorítson, hanem hogy később ne érjenek meglepetések... összeszedik a legabszurdabb, legfejfájósabb problémákat.
- A hozzászóláshoz be kell jelentkezni
Ami kell a php-hez:
1. HTML ismeretek... a php standard outputja a webes felület. (persze, php-vel akár js-et is generáltathatsz)
2. FORM-ok használata.
3. Alapvető php elemek megismerése (pl. echo, print, fopen, fread, fwrite, fclose... )
4. $_POST[], $_REQUEST[], vagyis kommuniáció a formokkal, innen kezdve tudsz normális inputot, outputot csinálni.
5. Jöhet a magja az egésznek, ciklusok, elágazások, beépített függvények, egyebet.
-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba
- A hozzászóláshoz be kell jelentkezni
Kezdd a hivatalos langreffel. Utána ezek:
PHP Master: Write cutting-edge code - ez elég jó könyv, bár ha jól emlékszem picit elavult (php 5.3-hoz van, 5.4-ben bejött újabb nyelvi elemekről nem ír).
PHP the right way - ezt olvasd hozzá.
- A hozzászóláshoz be kell jelentkezni
Ha nem ebből él (márpedig még tanul tehát talán nem), és nulláról kezdi mindkettőt, akkor a PHP rossz választás.
--
Gábriel Ákos
http://i-logic.hu
- A hozzászóláshoz be kell jelentkezni
Ebben egyetértek veled, de az eredeti kérdés nem az volt hogy php vagy nem, hanem hogy ha php, akkor miből érdemes tanulni.
- A hozzászóláshoz be kell jelentkezni
Továbbgondoltam, én kérek elnézést.
--
Gábriel Ákos
http://i-logic.hu
- A hozzászóláshoz be kell jelentkezni
Kezdőknek szerintem ez nagyon jó alap és látványos is:
http://www.codecademy.com/tracks/php
- A hozzászóláshoz be kell jelentkezni
Ha már van Java háttér és webprogramozni akarsz akkor miért nem valamilyen komolyabb web frameworkben kezdesz el dolgozni?
A PHP inkább a múltat reprezentálja...
Pl. http://www.playframework.com/
De van sok másik is, a lista eléggé végtelen.
--
http://developersideas.blogspot.hu/
http://neurogadget.com/
- A hozzászóláshoz be kell jelentkezni
Egy létező - PHP-ban írt - projektbe kell szervesen integrálódó részeket fejlesztenem, ez eléggé megköti a kezem. De köszönöm a tippet!
És köszönöm a többieknek is, van jónéhány hasznosnak tűnő olvasmány! :)
- A hozzászóláshoz be kell jelentkezni
Elég sokat fejlesztek PHP-ban és mint olyan, szeretem is. Alapvetően az a véleményem, hogy bármilyen nyelven lehet szar kódot írni, csak a PHP esetén ez meg is látszik, amíg más nyelveknél a szar is rózsa illatú, de attól még ugyanolyan szar marad, hiába néz ki elegánsan.
Amit a nyelvről tudnod kell, hogy gyengén típusos. Ez azt jelenti, hogy minden gátlás nélkül össze tudsz hasonlítani egy stringet és egy intet. Na és ebből van is baj bőven, mert pl. ez a kifejezés igaz lesz:
'0xff' == '255'
Viszont a PHP 5.3 óta van benne többé-kevésbé értelmes OOP és meg az olyan szerkesztőkkel mint pl a PHPStorm már van értelmes kódkiegészítésed is. Ami mellette szól, hogy nem kell feltétlenül felhőkarcolót építened, ha egy egyszerű dolgot akarsz.
Egy szóval, ha láttál már Javat, akkor a PHP nagyon nem fog tudni zavarba hozni, mivel OOP-ül tudsz, a függvényeket meg úgyis mindenki a manualbol nézi és utána beburkolja valami értelmes API-t nyújtó osztályba, hiszen képtelenség megjegyezni. Ugyanez igaz a szuperglobálisokra is, azokat sem érdemes nagyon közvetlenül használni, kivéve persze ha szivatni akarod magad.
Hogy hol kezdjed? Markold meg a Symfonyt vagy a ZF2-t és rakj össze egy projektet velük. Ezek a legelterjedtebb frameworkök, és noha sok a marhaság ezekben is, nagyságrendileg megtanulod, hogy merre van a PHP-ban az előre, illetve arra is rájössz, hogy miben nem érdemes ezeket követni.
- A hozzászóláshoz be kell jelentkezni
Ezek a legelterjedtebb frameworkök
Nem tudom mennyire releváns, inkább csak érdekesség, de a sitepoint által készített felmérés szerint most a laravel a legmenőbb.
Én mondjuk csak felületesen néztem meg egyszer, annyira nem voltam tőle elájulva :) mondjuk a zf2 / symfony2 -től sem.
- A hozzászóláshoz be kell jelentkezni
Ha már itt tartunk, felteszem a kérdést. Szerintetek Symfony vagy CakePHP? Abszolút csak kíváncsiságból kérdem, ki melyiket szereti és miért, illetve melyik az elterjedtebb errefelé.
- A hozzászóláshoz be kell jelentkezni
attol fugg mit fejlesztesz
- A hozzászóláshoz be kell jelentkezni
mondasz példákat, hogy mire jó az egyik, mire a másik?
- A hozzászóláshoz be kell jelentkezni
nagy, komplex domain-el rendelkezo alkalmazasokra mindenkeppen symfony2t hasznalnek, kis/kozepes mind meretben es bonyolultsagban (arra is, de) arra mehet a cake is
- A hozzászóláshoz be kell jelentkezni
köszi, tudsz mondani konkrét részleteket, amik miatt egyik erre másik arra? valami a cakephp-ből hiányzik? valami a symphony-t kevésbé alkalmassá teszi kisebb project-ekre?
- A hozzászóláshoz be kell jelentkezni
cakephp crud kozelibb es erossen elonybe helyezi a convention over configurationt, azert hogy segitse a rapid developmentet, hogy egy csomo dolgot megold conventionbol es neked csak azt kell definialni ami mas, csak mikor nagyon sok minden "mas" akkor ez inkabb hatranyba fordul at. Tipikusan a business logika helyes helyen es modon torteno definialasa nehezkesse valik mikor rendkivul komplex logikakat kell olyan patternekbe beleeroszakolni mint az aktiv rekord, ami tudtommal meg mindig default a cakeben
- A hozzászóláshoz be kell jelentkezni
köszönet, így már értem
- A hozzászóláshoz be kell jelentkezni
http://deathlyray.uw.hu/book/php_feketekonyv.pdf
cca 10 éves, de nincs jobb magyarul.
- A hozzászóláshoz be kell jelentkezni
A tartalomjegyzéket végigfutva azért erősen fenntartásokkal kezelendő, eléggé sokat változott azóta mind a nyelv, mind a köré kiépíthető platform (DBMS, caching, webszerver, ...), de az elméletibb részekre akár jó is lehet (pl. egy relációs adatbázis 10 év után is táblákban gondolkozik, egy XSL is ugyanarra jó, mint 10 éve). Amúgy azon már régen is meglepődtem (és most megint), hogy a könyv előbb nézi az online fizetéseket, mint a tömböket. :)
BlackY
- A hozzászóláshoz be kell jelentkezni
Ami nálam eddig bevállt, hogy felmerült egy hasznos weboldal készítésének gondolata és el is kezdtem elkészíteni. Régen szakmailag akartam jó lenni benne, az egomat fényesítve, de ez nekem nemigazán jött be. Egy jó weboldal elkészítése során szinte mindent megtanulsz.
Youtube és google sokat fog segíteni neked. Mivel van szád, sok fórumon még kérdezhetsz is. Ha normálisan teszed fel a kérdésed, furcsa módon még jó válaszokat is kaphatsz. Az angol nyelvű weboldalak is segíthetnek, én magyarul és angolul is szoktam keresni.
Vigyázz, kóklerek és esti fáradtságban hibázók is vannak, bár ez sem jellemző itt annyira. A megoldásokat előre tesztelni kell és utána megköszöni a másiknak. Én is írtam vissza a másiknak, hogy ez nem jött úgy össze, ahogy kellene. Volt amikor utána néztem vagy hibára gyanakodva megkíséreltem kijavítani és úgy már jó volt.
Gondolkodni neked kell. Ha épp nagyon nem megy, egy kis pihenés, alvás segít. Másoktól akkor érdemes kérdezni, ha nagyon elakadtál. Ugyanis akkor hamarabb kaphatsz választ, mint amikor megtalálod valahol vagy rájössz a megoldásra. Ha hamarabb jössz te magad rá a válaszra, akkor illik erről a másikat is tájékoztatni, ne agyaljon neked senki fölöslegesen. Én azért a megoldásokat is közölni szoktam, esetleg hogy mi vált be a legjobban, meg a hiba javítását is. A hasznos információkra másoknak is épp olyan szükség lehet.
Mysql(kellhet), html, css tudáson kívül talán néha js is kellhet. A jss használatát én egyelőre mellőzném. Sok erről szóló vita olvasása után megérted, hogy mi szól mellette és ellene. Sokminden nélküle is jól megoldható.
Ellenőrzésekre nagyon figyelj majd oda php szinten. Például jól határozd meg, hogy egyes bekért adatok milyenek lehetnek. Biztonság, tévedés, adatok manipulálása, ami ide köthető.
Legyen általában egy weboldal gyors és minden eszközön kényelmesen használható. Az utóbbinál a css-sel való tartalmak jól átlátható módon való elhelyezésével visszonylag jól megoldható. A js tud még itt segíteni, de mértékkel lehet csak érdemes használni. Az adatok ellenőrzését bár itt is megoldhatod, felhasználói szinten jó megoldás lehet. De php szinten kezd ezt megoldani, mert az a js kikapcsolása esetén is működni fog, ez pedig fontos szempont.
Volt szó osztályokról. Nemigazán jellemző a használata, többnyire nincs rá szükség. A saját függvények készítése gyakoribb. Hogy a kettő közül mikor melyiket erdemes használni, az majd világossá fog válni számodra.
A keretrendszerek használatához is kell php tudás. De ha már a php-t megtanulod, akkor csinálsz magadnak sablonokat, függvényeket, amit sok helyen fel is tudsz használni. De ezzel is módjával, inkább csak azokat érdemes újra használni, amit nélküle is szinte ugyanúgy irnád meg. A lényeg, hogy amikor az ember elölről ír valamit, akkor abban sokkal nagyobb tér van, mint sima másolása van. Hiszen ilyenkor jön elő olyan, hogy ezt így is folytathatom, talán így megvalósítva jobb lesz, mint ahogy eddig csináltam vagy ahogy eddig láttam.
- A hozzászóláshoz be kell jelentkezni
Annyira kár, hogy nem lehet hup-on szavazni a comment-ekre...
"Volt szó osztályokról. Nemigazán jellemző a használata, többnyire nincs rá szükség."
Látom a jószándékot, de szerintem vesd össze amit írtál a fentiekkel, ki milyen szintű tudás alapján mondja amit, és gondold végig amiket írtál. Én sem véletlen csak kérdezek itt, és nem írok (hülyeségeket).
- A hozzászóláshoz be kell jelentkezni
Akkor hadd fogalmazzak pontosabban. Egyes területeken egyes feladatokon célszerűbb osztályokat használni.
Azért írtam, hogy többnyire nincs szükség, mert van amit valaki osztályokkal oldott meg, van aki meg függvénnyel és mással. Nincs mindenre szabály, mindkét megoldás is lehet éppolyan jó. Igen, van ahol számít, hogy épp milyen megoldásra van szükség.
Nem véletlenül írtam utána ezt is:
"Hogy a kettő közül mikor melyiket erdemes használni, az majd világossá fog válni számodra."
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni