Lithium - The most RAD framework
http://lithify.me/
Ben op zoek naar mensen die hier ook mee werken. Het lijkt enigzins op CakePHP omdat de author hiervan de lead developer was.
Link: Ben op zoek naar mensen die hier ook mee werken. Het lijkt enigzins op CakePHP omdat de author hiervan de lead developer was.
Op het eerste gezicht ziet het er allemaal wel aardig uit. Echter, toen ik op github eens door de sources bladerde zag ik dat de classes barsten van de statics. Toen ben ik maar gauw afgehaakt.
te moeilijk voor je ?
Globals, Statics and Singletons are evil.
Flip -- op 26/08/2012 19:32:56:
te moeilijk voor je ?
Wat heeft 'te moeilijk' te maken met een overhoeveelheid statics? :)
Gewijzigd op 29/08/2012 23:46:12 door Flip --
Met singletons is het bijna onmogelijk om test driven development te gebruiken en statics vind ik zelf niet eens OO.
Als je een class static methods meegeeft maak je van de class meer een collectie van functies dan een object. Als je instance methods maakt in de class is de class wel een object. En ook met static methods is het unit testen moeilijk, aangezien deze static zijn en niet per instance verschillen.
Mooi gesproken Wouter, ik had het niet beter kunnen verwoorden.
Zie: http://lithify.me/docs/manual/appendices/readme.wiki
"You guys use statics all over the place. Aren't those really hard to test?"
Verder zijn statics niet per definitie foute code en hebben ze wel degelijk voordelen.
Gewijzigd op 30/08/2012 15:45:04 door Flip --
In de link staat het eigenlijk all, het probleem met statics (net als met globals en singletons) is 'state'.
En we kunnen er wel een academische discussie van maken, maar die is al heel vaak gevoerd. De ontwikkelaars van PHP willen uiteindelijk ook van de globals en superglobals af.
Ik heb wel eens naar het Laravel framework gekeken, dat is echt heel erg mooi. Maar ook weer in elkaar geplakt met statics. En ik snap wel waarom, je kunt ze te pas en onpas gebruiken, zonder een instantie van de class te instantieëren. En dan ben ik toch weer terug bij 'state'.
Ik zal eens kijken of ik ergens een voorbeeldje kan opsnorren.
En die FAQ, tja. Ze zeggen het er mooi. Lithum is niet object geörienteerd, maar functioneel geprogrammeerd. En ze hebben die functies mooi gegroepeerd in classes, die dan dienen als een soort namespace. Niks meer en niks minder. Kan mooi zijn, ik vind het niet mooi in een taal die ook object geörienteerd programmeren ondersteund.
En statics juist goed te testen? Niet mee eens. Bij elke test moet je een nieuwe instance hebben, iets wat niet bewerkt kan zijn door andere tests. Nee, elke test heeft recht op zijn eigen objecten, functies, enz.
Dat ze dat dan moeten gaan oplossen met een verkapte vorm van DI vind ik niet 'juist goed' te noemen, ik vind het hetzelfde als een handdoek om een lekkende kraan binden: Het werkt, alleen het is niet de oplossing.
Verder deel ik jullie mening niet om af te haken omdat het geen "mooie oplossing is". Als het werkt is het een oplossing. Dat er betere, maar tegelijkertijd minder realistische oplossingen zijn is niet relevant.
Zie ook: http://www.parashift.com/c++-faq-lite/biz-dominates-tech.html
Nu werken veel mensen niet voor een bedrijf, maar ik mag aannemen dat de meeste mensen geinterreseerd zijn hoe ze snel een mooie app in elkaar kunnen draaien waar techisch ook goed mee te werken is. Maar goed als de pracht en praal van jullie code zo belangrijk is, dan is deze niet voor jullie. Ik ben zelf aardig onder de indruk anders hoe het technisch in elkaar zit, ook al is het niet 100% OO, wat ik overigens ook nooit beweerd heb.
Dus voor de duidelijkheid, als iemand een punt heeft van dit werkt fijn of dit werkt niet fijn en je kan beter naar X kijken, ben ik een en al oor.
Gewijzigd op 30/08/2012 21:50:19 door Flip --
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
mysql_connect('localhost', 'user', 'pass');
mysql_select_db('tabel');
mysql_query('SELECT name FROM users WHERE id = '.$_POST['id']);
?>
mysql_connect('localhost', 'user', 'pass');
mysql_select_db('tabel');
mysql_query('SELECT name FROM users WHERE id = '.$_POST['id']);
?>
Het script zal vast wel werken, in de juiste omstandigheden. Het script zal ook vast wel sneller zijn dan 1tje met goede foutafhandeling. Maar ach, het werkt en dus is het goed.
Het gaat hier namelijk niet alleen om pracht en praal, het gaat om praktisch nut. Met TTD, wat dus niet goed gaat met statics en singletons, zal je bijna alle mogelijke situaties testen, waardoor je project tegen heel veel bestemd is. Tevens zal je een betere KISS (keep it simple, stupid) applicatie hebben, je hebt immers alleen maar die dingen erin gestopt die je ook echt nodig hebt.
Met OO zorg je dat je code extreem flexibel wordt. Hierdoor script je iets 1 keer en hoef je dat nooit meer toen doen. Met enkele kleine wijzigingen zal je het in elk project kunnen gebruiken.
En juist om dat praktische nut maak ik gebruik van deze technieken, want geloof me. TDD kost heel veel extra tijd en als ik iets haat dan is het meer tijd aan iets besteden dan nodig is.
Tevens die laatste alinea. Kijk eens naar frameworks als Symfony of ZF2. Deze hebben geweldige code, goede technieken en je kan in een paar tellen zo een hele applicatie maken met inlog system, enz.
Singletons, onrealistisch voorbeelden. Please stay on-topic thx.
Dus jammer, maar dit gaat hem niet worden.
Ik ben het eens met Wouter. Wouter uit zijn kritiek over dit framework, en dat zou niet ontopic zijn? Lijkt me een beetje raar :-)
Het verhaal over TDD, singletons, en hoe OO php mooi kan zijn, is aardige informatie op zich. Betekend niet dat lithium problemen heeft als: moeilijke TDD, E_NOTICE warnings, sql injection vulnerability, niet flexibel zijn. Dat Lithium niet op een bepaalde wijze is geïmplementeerd en het daarom esthetisch gezien niet mooi zou zijn is natuurlijk een persoonlijke keuze om het links te laten liggen. Ik was echter op zoek naar mensen die hier juist mee aan de slag zijn (of willen). Dit heb ik ook duidelijk aangegeven in mijn eerste post. Het is jammer dat deze intentie niet is overgekomen.
Jup! Ik! Ben er nu een jaartje mee aan het spelen en het is een fantastisch framework. Super licht en maakt gebruik van die nieuwste PHP features. Ik denk dat de mensen hierboven maar eens wat beter moeten kijken naar dit framework dan alleen op github. Download het eens en bouw eens een simpel website-je.