Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 25 reacties
Bron: Yii PHP , submitter: BBrunekreeft

Yii PHP Framework logo (75 pix)Yii is een component based php-framework, met volgens de ontwikkelaars zeer goede prestaties, die het bijzonder geschikt maken voor het ontwikkelen van grootschalige webapplicaties. Het framework bevat tal van opties, zoals mvc, dao/ActiveRecord, I18N/L10N, caching, jQuery-based AJAX support, scaffolding, input validation, widgets, events en theming. Voor meer informatie verwijzen we naar deze pagina. De ontwikkelaars hebben versie 2.0.10 uitgebracht en de release notes voor die uitgave zien er als volgt uit:

Yii 2.0.10 is released

We are very pleased to announce the release of Yii Framework version 2.0.10. Please refer to the instructions at http://www.yiiframework.com/download/ to install or upgrade to this version.

Version 2.0.10 is a minor release of Yii 2.0 which contains more than 80 enhancements and bug fixes. There are four minor changes that may affect your existing applications so check the UPGRADE.md file.

You may follow the development progress of Yii 2 by starring or watching Yii 2.0 GitHub Project. You may also follow Yii Twitter feeds or join Yii Facebook group to connect with other Yii developers. There is also a forum thread about this news announcement. A complete list of changes can be found in the CHANGELOG.

Yii PHP Framework screenshot (620 pix)

Moderatie-faq Wijzig weergave

Reacties (25)

Hmm grappig wist niet dat Yii nog zo actief onder development was voor een complete rewrite. Wat ik wel jammer vind is dat ze geen decoupled components hebben zodat je zelf via Composer kan selecteren welke onderdelen je wilt inladen. Dit betekent dus dat je het volledige framework moet inladen als je code van Yii wilt gebruiken. In mijn ogen hebben Laravel, Symfony en Auraphp dat wel iets netter voorelkaar waar je dus heel gericht alleen de benodigde onderdelen kan inladen die je wilt gebruiken.

[Reactie gewijzigd door juggle op 20 oktober 2016 22:32]

Maar waarom is het snel? C-based extensions zoals Falcon gebruikt?
Nee zeker niet, op een performance pagina leggen ze het uit dat ze classes alleen inladen als ze echt nodig zijn. Dit doen de moderne frameworks ook al en is dus in mijn ogen niet echt noemenswaardig. Overigens vergelijken ze op hun performance pagina nog met hele oude frameworks en wordt laravel daarin bijvoorbeeld niet genoemd.

Link: http://www.yiiframework.com/performance/

[Reactie gewijzigd door juggle op 20 oktober 2016 22:37]

ookal is Yii niet echt bepaalt snel
Eigenlijk wel raar die pagina. Ze vergelijken een oer-versie van Yii met oer-versies van de concurrenten. En dan ook nog eens vergelijken met of zonder APC, wat ook al jarenlang niet meer in ontwikkeling is.
Als ze het daarvan moeten hebben....

Ik gebruik overigens al een tijdlang CodeIgniter voor mijn meeste projecten, al moet ik zeggen dat ik een aantal jaar terug wel met Yii heb gestoeid. Ik vond het eigenlijk niet zo handig werken in eerste aanleg, en CI was een stuk laagdrempeliger.
Bij CI heb ik anders een veel meer outdated gevoel dan bij Yii... Geen namespaces, een verhaal dat een template engine langzaam zou zijn, enkel eigen code gebruiken ipv vertrouwen op bewezen packages, ondersteuning voor PHP 5.2 :')

Ik kan niet echt zeggen dat ik er enthousiast van wordt terwijl de ontwikkeling bij Yii nog wat actiever lijkt te zijn.
Nou, heel kort door de bocht gezegd "Wij van WC eend".

Langer uitgelegd, het is hoe je er tegen aan kijkt. In een aantal gevallen zullen ze snel zijn. Als ik hun uitleg lees kan ik wel begrijpen waarom ze als snel uit de test komen. Ze tonen alleen "Hello world"
Ze geven hier natuurlijk ook een reden voor, die wel te begrijpen is:
We choose to do "Hello World" testing mainly to achieve our goal, i.e., to find out the minimal overhead of each framework. Many people complain that the "Hello World" application is meaningless because a real-world application often needs to deal with more complex tasks, such as database queries. This is not very true. In reality, especially in a large-scale Web 2.0 application, we often encounter scenarios that are very close to "Hello World". For example, an application may need to respond to an AJAX request that should return the current server timestamp; a page has a large portion of its content being cached and an application just needs to fetch the cached content and display it.

Another reason for "Hello World" is because when more complex features (e.g. database queries) are involved, it becomes a very difficult task to ensure the comparison is fair. For example, one framework could be very efficient at performing database queries, but it lacks caching scheme; while another framework is a bit slower with database queries, but it has sophisticated caching feature to help ease the performance hit. There are simply too many factors involved to conduct a fair comparison.
Alleen kun je voor ieder argument die ze geven weer een tegenargument geven ;) Het is een case by case verhaal. Het ene project zal sneller in framework a draaien, het andere project sneller in framework b.

'Snel' is een relatief iets.
Toevallig heb ik afgelopen dagen naar Laravel zitten kijken. Ik vraag me nu af, wat is nu eigenlijk het verschil tussen alle frameworks (bijv. Laravel en Yii)? Of is het eigenlijk gewoon een andere implementatie van hetzelfde en je kiest gewoon wat het beste bij je past?
(Frameworks zijn nieuw voor me, maar het lijkt me goed om te leren i.p.v. handmatig alles in PHP te programmeren).
(Frameworks zijn nieuw voor me, maar het lijkt me goed om te leren i.p.v. handmatig alles in PHP te programmeren).
Ho WACHT, STOP! Leer eerst is de basis van PHP, en ga dan pas in de weer met frameworks.
Een fout die veel beginners maken (zelf schuldig aan) geweest is dat ze alles met het framework gaan oplossen, waardoor je een brei ontestbare code krijgt die bij elke update helemaal moet worden herschreven (afhankelijk van de compatibility policy van het framework).

Mijn advies (gebaseerd op tips van vele andere): Leer eerst met php werken, zonder een framework of iets, zorg dat je de basis kennis van de taal onder de knie hebt, leer daarna verder met hoe je software echt ontwerpt (Het boek Clean Code is echt een aanrader (zijn ook video's van)). Daarna kan je met frameworks aan de slag (van het Clean Code principe weet je dan inmiddels dat Framework een implementatie detail zijn).

Een Framework bied een gestandaardiseerde oplossing voor een veel voorkomend probleem, maar als je niet eerst de basis onder de knie hebt ga je alleen maar fouten maken en: zit straks je hele inboedel vast aan de vloer en muren, en kan je bij verhuizing alles opnieuw kopen :+ (als werkelijk voorbeeld).
Sorrie maar dit moet ik toch tegenspreken. Uiteraard is het heel belangrijk om de basis te kennen in PHP maar ga ALSJEBLIEFT niet het wiel weer opnieuw uitvinden.

Als je code in productie gaat gebruiken is het in mijn ogen van enorm belang dat je daarvoor een goed framework pakt. Hiermee neem je een hoop frustratie en veiligheidsissues weg. Daarnaast bieden frameworks een goede basis voor testable code.

De boeken die je noemt is uitstekend leermateriaal maar dienen ter ondersteuning. Waar je vooral veel van leert is de code te bekijken van het Framework dat je gaat gebruiken. Leer dus niet alleen het framework maar ook hoe het framework werkt intern. Pas je een bepaalde functie toe uit het framework bekijk dan in de code wat deze precies doet. Hier leer je ontzettend veel van.

Maak je daarnaast vanaf dag 1 het gebruik van Composer eigen. Hiermee kun je code van derden zeer gemakkelijk in je code laden. Leer je weg in Depency Injection en je kunt gemakkelijk componenten uitwisselen.

Dit is de weg om een goede PHP programmeur te worden waarmee je ook de interne werking leert. Door de lage instap van PHP is het namelijk heel gemakkelijk om je verkeerde methodieken aan te leren. Hier staat het internet namelijk vol mee.

Tuurlijk kom je zaken tegen die je uiteindelijk wilt herschrijven maar als je vanaf het begin een goed framework pakt zul je zien dat dat veel minder zal zijn dan wanneer je from scratch begint.
Ik begrijp wel wat hij bedoelt. Als je PHP wil leren, begin je niet met een framework. Zoals jij aangeeft is het in productie wel wenselijk dat je een degelijk framework hebt i.v.m. beveiliging etc (ook één van de redenen dat ik er een wil gaan gebruiken), maar als complete beginner lijkt het me ook niet wenselijk om iets in productie te hebben. Al zit het framework nog zo goed in elkaar, als je geen idee hebt wat het (of de onderliggende code) doet maak je makkelijk fouten.
Ik begrijp ook zeker wat hij bedoelt, maar naar mijn inziens is het wel goed om met een framework te beginnen. Waarom? Omdat de realiteit is dat mensen beginnen met php juist om iets in productie te zetten. Daarnaast leer je door het gebruik van een framework een aantal basisprincipen in het programmeren in PHP die je anders nooit zou oppakken.

Het internet ligt vol met code voorbeelden in PHP die achterhaald, danwel enorme veiligheidsrisico's bevatten. Dus als je begint met programmeren leer je het in principe verkeerd.

Hoewel de leervurve als je nog nooit geprogrammeerd hebt enorm hoog is door in een framework in te stappen leer je wel de basisprincipen goed. Daarnaast zal je code als je in productie draait een stuk stabieler en veiliger zijn dan wanneer je met je eigen brouwsels aan de slag gaat.

Tot slot is het goed om je aan te leren code van anderen te gebruiken. Hoe vroeger je hiermee begint, hoe robuuster je code zal zijn. Daarnaast leer je gewoon een heleboel van hoe je een goede webapplicatie maakt door het lezen van code van anderen.
Zit wat in ja. Het is dan wel extra belangrijk om een goede 'uitleg' te volgen die alles stapje voor stapje uitlegt. Een simpele 'Hello world!' in PHP is eenvoudig te begrijpen, maar met het hele framework eromheen is het al een stuk ingewikkelder om te begrijpen.

Ik denk dat ik ook maar wat tutorials op laracasts ga volgen. Meestal leer ik door gewoon te beginnen en alles wat onduidelijk is op te zoeken, maar in het geval van Laravel weet ik maar amper waar ik mee moet beginnen :+ .
Waarom dan de keuze voor Laravel? Je kan ook kijken naar Silex of Symfony waarbij de eerste net wat makkelijker is en de laatste meer "enterprise". Beiden hebben ieder geval zeer complete handleidingen zodat je geen externe bronnen nodig hebt om aan de gang te gaan.
Onder andere omdat OctoberCMS gebaseerd is op Laravel. Ik heb nu een keer Drupal gebruikt maar dat is ook vrij complex dus wilde nu OctoberCMS proberen (waarbij de webapp dan geïntegreerd wordt). Daarnaast ben ik Laravel al vaak tegengekomen bij 'bekende' programma's en wordt het vaak aangeraden.
Ik ben ook niet echt op zoek naar specifieke functies dus het zal allemaal wel werken, maar je moet toch een keuze maken ergens.
Begin gewoon lekker met de basis. Pak homestead en geen WAMP. Leer hoe je composer gebruikt en binnen no time heb je een laravel installatie draaien.
Kleine correctie over de tests, wat ik met name bedoel is als je alle code van het framework afhankelijk maakt (zelfs als dit kan worden voorkomen).

Bij Symfony is het bijvoorbeeld makkelijk om altijd de Container te gebruiken voor alles, of dat je alle logica in de Controller stopt en zo eerst een AppKernel moet opzetten om te kijken of je prijs calculator goed werkt. De Calculator zal misschien binnen 1 seconde getest zijn, maar voor je zover bent moet je eerst door tig lagen en het request proces.

Dit word ook wel de testing pyramid genoemd.
http://martinfowler.com/bliki/TestPyramid.html

Bij Laravel is het zelfs nog makkelijker omdat je Facades kan gebruiken, die eigenlijk niks anders dan static-service locators zijn. Makkelijk om mee te werken, maar een hel om te testen, omdat je zonder het te weten eigen afhankelijk bent van de service-container en diens staat.

Een Facade heeft als taak om een gebruiksvriendelijke abstractie te bieden voor bestaande classen.
Zodat je direct Mailer::send() kan gebruiken niet eerst alle details hoeft te bootstrappen (dat is immers verborgen). Ga je echter alle logica in de Facade zelf stoppen dan is het einde zoek.

Ongeacht welk framework je gebruikt, je begint bij de basis (geen UI, database opslag of iets) maar echt de kern van de applicatie, die je met unit tests kan draaien, daarna ga je kijken welk framework het beste geschikt is om de UI (waaronder web), opslag en andere "details" af te handelen, uiteindelijk kan je nooit helemaal loskoppelen van het framework (Controllers, Forms, routing, Templates), maar de kern van de applicatie wil je echt losgekoppeld houden van het framework zodat je veel makkelijker upgraden, testen en onderdelen hergebruiken voor andere doeleinde (die prijs calculator moet alleen prijzen berekenen maar niet de weergaven bepalen, dat is een detail. die kan je hergebruiken voor de web, cli, web api, etc.).

Maar als ik dit alles moet aan uitleggen dan ben ik wel even bezig 8)7 en daar zijn al genoeg boeken overgeschreven :Y)

Edit: typo's.

[Reactie gewijzigd door s.stok op 22 oktober 2016 13:04]

Zonder Laravel te propaganderen biedt Laravel uitstekende methodes om Facades te testen. Dit doen ze via de shouldReceiveMethod die de facade call in een mockobject retourneert.

Wat betreft de bloated controllers, dit is een kwestie van goede programmeer technieken toepassen bijvoorbeeld door het gebruik van commands (In Laravel) of een servicelayer maken. Dat je daabij de service container gebruikt voor de dependency injection is geen probleem, deze kun je makkelijk ook uit een ander framework of library halen.

Uiteraard zul je enige vorm van afhankelijkheid hebben in een framework maar dat is an sich niet erg. Mijn punt is dat het veel beter is (en veiliger) om een framework te pakken als je begint met programmeren dan dat je je eigen brouwsel online kiepert. En dat is waar de realiteit toch vaak op neer komt.

[Reactie gewijzigd door juggle op 22 oktober 2016 15:17]

Ik heb al ervaring met PHP (maar dus niet met frameworks). Op dit moment ben ik met een soort web-app bezig. In principe werkt dit prima in 'gewoon' PHP, maar je hebt veel dubbele code en het is niet echt overzichtelijk.
Bijv. database queries zien er op het eerste gezicht een stuk netter uit in Laravel dan het handmatig in PHP te doen. Mijn bedoeling is om de hele code zoveel mogelijk modulair en overzichtelijk te maken, zodat bij een toekomstige update van wat-dan-ook ik niet 10 verschillende bestanden op verschillende plekken hoef aan te passen.

Zo op het eerste gezicht zien de meeste frameworks er ook dermate ingewikkeld uit dat het sowieso niet lijkt aan te raden voor een beginner. :+
Laravel heeft een relatief hoge leercurve sinds versie 5. Dit komt omdat het veel gebruikt maakt van design patterns die best lastig te begrijpen zijn als je een beginnend php programmeur bent. Je zult zeker in het begin merken dat je dingen doet omdat ze zo zijn uitgelegd maar je geen idee hebt waarom.

Het is echter wel zo dat je zult zien dat je veel sneller echt lekker aan je applicatie aan het sleutelen bent in plaats van dat je je bezig houdt met code schrijven voor basis zaken zoals form validatie en database afhandeling.

Uiteindelijk wanneer je de basis goed onder de knie hebt en begrijpt wat het framework doet en waarom zul je zien dat alles logisch wordt en je veel betere code gaat schrijven.

[Reactie gewijzigd door juggle op 22 oktober 2016 15:23]

Vooral een kwestie van smaak en wat je als developer wil. De een vind Laravel fijn, de ander Yii en de ander Symfony. Mijn voorkeur gaat uit naar de laatste omdat het veel puristischer is dan bijv Laravel waar veel gebeurt met static/magic methods wat ik zelf gewoon niet duidelijk/fijn vindt werken. Maakt het Laravel een foute keuze? Nee hoor, doe wat je prettig vindt.
Als je het enkel van bad marketing moet hebben door oude versies van de concurrentie te kijk te zetten doe je toch iets fout.

Sowieso is de concurrentie tussen PHP frameworks al moordend doordat er in de jaren 90-00 iedereen PHP wilde leren om hun phpBB/vBulletin-forum aan te passen.

Op dit item kan niet meer gereageerd worden.



Nintendo Switch Google Pixel Sony PlayStation VR Samsung Galaxy S8 Apple iPhone 7 Dishonored 2 Google Android 7.x Watch_Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True